System and Method for Location Based Exchanges of Data Facilitating Distributed Locational Applications

ABSTRACT

Provided is a distributed system and method for enabling new and useful location dependent features and functionality to mobile data processing systems. Mobile data processing systems interact with each other as peers in communications and interoperability. A mobile data processing system may dynamically take on roles, depending on the environment and capabilities available at a particular time. Reference whereabouts data is appropriately shared between mobile data processing systems to carry out automatic location techniques ensuring mobile data processing systems are kept up to date with their own whereabouts and whereabouts of others, regardless of the freely moving travels of any of the mobile data processing systems involved, and the location technologies that may or may not be available when needed. A confidence is associated to whereabouts data shared for facilitating selection of the best candidate data used in determining new whereabouts information.

CROSS-REFERENCES TO RELATED APPLICATIONS

This application is a continuation of application Ser. No. 14/033,539(U.S. Pat. No. 8,750,823 to be issued on Jun. 10, 2014) filed Sep. 23,2013 and entitled “System and Method for Location Based Exchanges ofData Facilitating Distributed Locational Applications” which is acontinuation of application Ser. No. 12/077,041 (now U.S. Pat. No.8,600,341 issued on Dec. 3, 2013) filed Mar. 14, 2008 and entitled“System and Method for Location Based Exchanges of Data FacilitatingDistributed Locational Applications”. This application contains anidentical specification to Ser. No. 14/033,539 except for the claimswhich are very similar.

FIELD OF THE INVENTION

The present disclosure relates generally to location based services formobile data processing systems, and more particularly to location basedexchanges of data between distributed mobile data processing systems forlocational applications. A common connected service is not required forlocation based functionality and features. Location based exchanges ofdata between distributed mobile data processing systems enable locationbased features and functionality in a peer to peer manner.

BACKGROUND OF THE INVENTION

The internet has exploded with new service offerings. Websitesyahoo.com, google.com, ebay.com, amazon.com, and iTunes.com havedemonstrated well the ability to provide valuable services to a largedispersed geographic audience through the internet (ebay, yahoo, google,amazon and iTunes (Apple) are trademarks of the respective companies).Thousands of different types of web services are available for manykinds of functionality. Advantages of having a service as theintermediary point between clients, users, and systems, and theirassociated services, includes centralized processing, centralizedmaintaining of data, for example to have an all knowing database forscope of services provided, having a supervisory point of control,providing an administrator with access to data maintained by users ofthe web service, and other advantages associated with centralizedcontrol. The advantages are analogous to those provided by thetraditional mainframe computer to its clients wherein the mainframe ownsall resources, data, processing, and centralized control for all usersand systems (clients) that access its services. However, as computersdeclined in price and adequate processing power was brought to moredistributed systems, such as Open Systems (i.e. Windows, UNIX, Linux,and Mac environments), the mainframe was no longer necessary for many ofthe daily computing tasks. In fact, adequate processing power isincorporated in highly mobile devices, various handheld mobile dataprocessing systems, and other mobile data processing systems. Technologycontinues to drive improved processing power and data storagecapabilities in less physical space of a device. Just as Open Systemstook much of the load of computing off of mainframe computers, so to canmobile data processing systems offload tasks usually performed byconnected web services. As mobile data processing systems are morecapable, there is no need for a service to middleman interactionspossible between them.

While a centralized service has its advantages, there are alsodisadvantages. A service becomes a clearinghouse for all web servicetransactions. Regardless of the number of threads of processing spreadout over hardware and processor platforms, the web service itself canbecome a bottleneck causing poor performance for timely response, andcan cause a large amount of data that must be kept for all connectedusers and/or systems. Even large web services mentioned above sufferfrom performance and maintenance overhead. A web service response willlikely never be fast enough. Additionally, archives must be kept toensure recovery in the event of a disaster because the service housesall data for its operations. Archives also require storage, processingpower, planning, and maintenance. A significantly large and costly datacenter is necessary to accommodate millions of users and/or systems toconnect to the service. There is a tremendous amount of overhead inproviding such a service. Data center processing power, data capacity,data transmission bandwidth and speed, infrastructure entities, andvarious performance considerations are quite costly. Costs include realestate required, utility bills for electricity and cooling, systemmaintenance, personnel to operate a successful business with service(s),etc. A method is needed to prevent large data center costs whileeliminating performance issues for features sought. It is inevitablethat as users are hungry for more features and functionality on theirmobile data processing systems, processing will be moved closer to thedevice for optimal performance and infrastructure cost savings.

Service delivered location dependent content was disclosed in U.S. Pat.Nos. 6,456,234; 6,731,238; 7,187,997 (Johnson). Anonymous location basedservices was disclosed in U.S. PTO Publication 2006/0022048 (Johnson).The Johnson patents and published application operate as most webservices do in that the clients connecting to the service benefit fromthe service by having some connectivity to the service. U.S. Publication2006/0022048 (Johnson) could cause large numbers of users to inundatethe service with device heartbeats and data to maintain, depending onthe configurations made. While this may be of little concern to acompany that has successfully deployed substantially large web serviceresources, it may be of great concern to other more frugal companies. Amethod is needed for enabling location dependent features andfunctionality without the burden of requiring a service.

Users are skeptical about their privacy as internet servicesproliferate. A service by its very nature typically holds informationfor a user maintained in a centralized service database. The user'spreferences, credential information, permissions, customizations,billing information, surfing habits, and other conceivable userconfigurations and activity monitoring, can be housed by the service atthe service. Company insiders, as well as outside attackers, may getaccess. Most people are concerned with preventing personal informationof any type being kept in a centralized database which may potentiallybecome compromised from a security standpoint. Location based servicesare of even more concern, in particular when the locations of the userare to be known to a centralized service. A method and system is neededfor making users comfortable with knowing that their personalinformation is at less risk of being compromised.

A reasonable requirement is to push intelligence out to the mobile dataprocessing systems themselves, for example, in knowing their ownlocations and perhaps the locations of other nearby mobile dataprocessing systems. Mobile data processing systems can intelligentlyhandle many of their own application requirements without depending onsome remote service. Just as two people in a business organizationshould not need a manager to speak to each other, no two mobile dataprocessing systems should require a service middleman for usefullocation dependent features and functionality. The knowing of its ownlocation should not be the end of social interaction implementationlocal to the mobile data processing systems, but rather the startingplace for a large number of useful distributed local applications thatdo not require a service.

Different users use different types of Mobile data processing Systems(MSs) which are also called mobile devices: laptops, tablet computers,Personal Computers (PCs), Personal Digital Assistants (PDAs), cellphones, automobile dashboard mounted data processing systems, shoppingcart mounted data processing systems, mobile vehicle or apparatusmounted data processing systems, Personal Navigational Devices (PNDs),iPhones (iPhone is a trademark of Apple, Inc.), various handheld mobiledata processing systems, etc. MSs move freely in the environment, andare unpredictably moveable (i.e. can be moved anywhere, anytime). Manyof these Mobile data processing Systems (MSs) do not have capability ofbeing automatically located, or are not using a service for beingautomatically located. Conventional methods use directly relativestationary references such as satellites, antennas, etc. to locate MSs.Stationary references are expensive to deploy, and risk obsolescence asnew technologies are introduced to the marketplace. Stationaryreferences have finite scope of support for locating MSs.

While the United States E911 mandate for cellular devices documentsrequirements for automatic location of a Mobile data processing System(MS) such as a cell phone, the mandate does not necessarily promote realtime location and tracking of the MSs, nor does it define architecturefor exploiting Location Based Services (LBS). We are in an era whereLocation Based Services (LBS), and location dependent features andfunctionality, are among the most promising technologies in the world.Automatic locating of every Mobile data processing System (MS) is anevolutionary trend. A method is needed to shorten the length of time forautomatically locating every MS. Such a goal can be costly using priorart technologies such as GPS (Global Positioning System), radio wavetriangulation, coming within range to a known located sensor, or thelike. Complex system infrastructure, or added hardware costs to the MSsthemselves, make such ventures costly and time constrained by schedulesand costs involved in engineering, construction, and deployment.

A method is needed for enabling users to get location dependent featuresand functionality through having their mobile locations known,regardless of whether or not their MS is equipped for being located.Also, new and modern location dependent features and functionality canbe provided to a MS unencumbered by a connected service.

BRIEF SUMMARY OF THE INVENTION

LBS (Location Based Services) is a term which has gained in popularityover the years as MSs incorporate various location capability. The word“Services” in that terminology plays a major role in location basedfeatures and functionality involving interaction between two or moreusers. This disclosure introduces a new terminology, system, and methodreferred to as Location Based eXchanges (LBX). LBX is an acronym usedinterchangeably/contextually throughout this disclosure for the singularterm “Location Based Exchange” and for the plural term “Location BasedExchanges”, much the same way LBS is used interchangeably/contextuallyfor the single term “Location Based Service” and for the plural term“Location Based Services”. LBX describes leveraging the distributednature of connectivity between MSs in lieu of leveraging a commoncentralized service nature of connectivity between MSs. The line canbecome blurred between LBS and LBX since the same or similar featuresand functionality are provided, and in some cases strengths from bothmay be used. The underlying architectural shift differentiates LBX fromLBS for depending less on centralized services, and more on distributedinteractions between MSs. LBX provide server-free and server-lesslocation dependent features and functionality.

Disclosed are many different aspects to LBX, starting with thefoundation requirement for each participating MS to know, at some pointin time, their own whereabouts. LBX is enabled when an MS knows its ownwhereabouts. It is therefore a goal to first make as many MSs know theirown whereabouts as possible. When two or more MSs know their ownwhereabouts, LBX enables distributed locational applications whereby aserver is not required to middleman social interactions between the MSs.The MSs interact as peers. LBX disclosed include purely peer to peerinteractions, peer to peer interactions for routing services, peer topeer interactions for delivering distributed services, and peer to peerinteractions for location dependent features and functionality. Oneembodiment of an LBX enabled MS is referred to as an LbxPhone™.

It is an advantage herein to have no centralized service governinglocation based features and functionality among MSs. Avoiding acentralized service prevents performance issues, infrastructure costs,and solves many of the issues described above. No centralized servicealso prevents a user's information from being kept in one accessibleplace. LBS contain centralized data that is personal in nature to itsusers. This is a security concern. Having information for all users inone place increases the likelihood that a disaster to the data willaffect more than a single user. LBX spreads data out acrossparticipating systems so that a disaster affecting one user does notaffect any other user.

It is an advantage herein for enabling useful distributed applicationswithout the necessity of having a service, and without the necessity ofusers and/or systems registering with a service. MSs interact as peersin preferred embodiments, rather than as clients to a common service(e.g. internet connected web service).

It is an advantage herein for locating as many MSs as possible in awireless network, and without additional deployment costs on the MSs orthe network. Conventional locating capability includes GPS (GlobalPositioning System) using stationary orbiting satellites, improved formsof GPS, for example AGPS (Adjusted GPS) and DGPS (Differential GPS)using stationary located ground stations, wireless communications tostationary located cell tower base stations, TDOA (Time Difference ofArrival) or AOA (Angle of Arrival) triangulation using stationarylocated antennas, presence detection in vicinity of a stationary locatedantenna, presence detection at a wired connectivity stationary networklocation, or other conventional locating systems and methods. Mobiledata processing systems, referred to as Indirectly Located Mobile dataprocessing systems (ILMs), are automatically located using automaticallydetected locations of Directly Located Mobile data processing systems(DLMs) and/or automatically detected locations of other ILMs. ILMs areprovided with the ability to participate in the same LBS, or LBX, as aDLM (Directly Located Mobile data processing system). DLMs are locatedusing conventional locating capability mentioned above. DLMs providereference locations for automatically locating ILMs, regardless of whereany one is currently located. DLMs and ILMs can be highly mobile, forexample when in use by a user. There are a variety of novel methods forautomatically locating ILMs, for example triangulating an ILM(Indirectly Located Mobile data processing system) location using aplurality of DLMs, detecting the ILM being within the vicinity of atleast one DLM, triangulating an ILM location using a plurality of otherILMs, detecting the ILM being within the vicinity of at least one otherILM, triangulating an ILM location using a mixed set of DLM(s) andILM(s), determining the ILM location from heterogeneously located DLMsand/or ILMs, and other novel methods.

MSs are automatically located without using direct conventional meansfor being automatically located. The conventional locating capability(i.e. conventional locating methods) described above is also referred toas direct methods. Conventional methods are direct methods, but not alldirect methods are conventional. There are new direct techniquesdisclosed below. Provided herein is an architecture, as well as systemsand methods, for immediately bringing automatic location detection toevery MS in the world, regardless of whether that MS is equipped forbeing directly located. MSs without capability of being directly locatedare located by leveraging the automatically detected locations of MSsthat are directly located. This is referred to as being indirectlylocated. An MS which is directly located is hereinafter referred to as aDirectly Located Mobile data processing system (DLM). For a pluralacronym, MSs which are directly located are hereinafter referred to asDirectly Located Mobile data processing systems (DLMs). MSs withoutcapability of being directly located are located using the automaticallydetected locations of MSs that have already been located. An MS which isindirectly located is hereinafter referred to as an Indirectly LocatedMobile data processing system (ILM). For a plural acronym, MSs which areindirectly located are hereinafter referred to as Indirectly LocatedMobile data processing systems (ILMs). A DLM can be located in thefollowing ways:

-   -   A) New triangulated wave forms;    -   B) Missing Part Triangulation (MPT) as disclosed below;    -   C) Heterogeneous direct locating methods;    -   D) Assisted Direct Location Technology (ADLT) using a        combination of direct and indirect methods;    -   E) Manually specified; and/or    -   F) Any combinations of A) through E);        DLMs provide reference locations for automatically locating        ILMs, regardless of where the DLMs are currently located. It is        preferable to assure an accurate location of every DLM, or at        least provide a confidence value of the accuracy. A confidence        value of the accuracy is used by relative ILMs to determine        which are the best set (e.g. which are of highest priority for        use to determine ILM whereabouts) of relative DLMs (and/or ILMs)        to use for automatically determining the location of the ILM.

In one example, the mobile locations of several MSs are automaticallydetected using their local GPS chips. Each is referred to as a DLM. Themobile location of a non-locatable MS is triangulated using radio wavesbetween it and three (3) of the GPS equipped DLMs. The MS becomes an ILMupon having its location determined relative the DLMs. ILMs areautomatically located using DLMs, or other already located ILMs. An ILMcan be located in the following ways:

-   -   G) Triangulating an ILM location using a plurality of DLMs with        wave forms of any variety (e.g. AOA, TDOA, MPT (a heterogeneous        location method));    -   H) Detecting the ILM being within the reasonably close vicinity        of at least one DLM;    -   I) Triangulating an ILM location using a plurality of other ILMs        with wave forms of any variety;    -   J) Detecting the ILM being within the reasonable close vicinity        of at least one other ILM;    -   K) Triangulating an ILM location using a mixed set of DLM(s) and        ILM(s) with wave forms of any variety (referred to as ADLT);    -   L) Determining the ILM location from heterogeneously located        DLMs and/or ILMs (i.e. heterogeneously located, as used here,        implies having been located relative different location        methodologies);    -   M) A) through F) Above; and/or    -   N) Any combinations of A) through M).

Locating functionality may leverage GPS functionality, including but notlimited to GPS, AGPS (Adjusted GPS), DGPS, (Differential GPS), or anyimproved GPS embodiment to achieve higher accuracy using knownlocations, for example ground based reference locations. The NexTel GPSenabled iSeries cell phones provide excellent examples for use as DLMs(Nextel is a trademark of Sprint/Nextel). Locating functionality mayincorporate triangulated locating of the MS, for example using a classof Radio Frequency (RF) wave spectrum (cellular, WiFi, bluetooth, etc),and may use measurements from different wave spectrums for a singlelocation determination (depends on communications interface(s) 70available). A MS may have its whereabouts determined using a pluralityof wave spectrum classes available to it (cellular, WiFi, bluetooth,etc). Locating functionality may include in-range proximity detectionfor detecting the presence of the MS. Wave forms for triangulatedlocating also include microwaves, infrared wave spectrum relativeinfrared sensors, visible light wave spectrum relative light visiblelight wave sensors, ultraviolet wave spectrum relative ultraviolet wavesensors, X-ray wave spectrum relative X-ray wave sensors, gamma ray wavespectrum relative gamma ray wave sensors, and longwave spectrum (belowAM) relative longwave sensors. While there are certainly more commonmethods for automatically locating a MS (e.g. radio wave triangulation,GPS, in range proximity detection), those skilled in the art recognizethere are methods for different wave spectrums being detected, measured,and used for carrying information between data processing systems.

Kubler et al (U.S. PTO publications 2004/0264442, 2004/0246940,2004/0228330, 2004/0151151) disclosed methods for detecting presence ofmobile entities as they come within range of a sensor. In Kubler et al,accuracy of the location of the detected MS is not well known, so anestimated area of the whereabouts of the MS is enough to accomplishintended functionality, for example in warehouse installations. Aconfidence value of this disclosure associated with Kubler et al tendsto be low (i.e. not confident), with lower values for long range sensorsand higher values for short range sensors.

GPS and the abundance of methods for improving GPS accuracy has led tomany successful systems for located MSs with high accuracy.Triangulation provides high accuracies for locating MSs. A confidencevalue of this disclosure associated with GPS and triangulating locationmethods tends to be high (i.e. confident). It is preferred that DLMs usethe highest possible accuracy method available so that relative ILMs arewell located. Not all DLMs need to use the same location methods. An ILMcan be located relative DLMs, or other ILMs, that each has differentlocating methodologies utilized.

Another advantage herein is to generically locate MSs using varietiesand combinations of different technologies. MSs can be automaticallylocated using direct conventional methods for accuracy to base on thelocating of other MSs. MSs can be automatically located using indirectmethods. Further, it is an advantage to indirectly locate a MS relativeheterogeneously located MSs. For example, one DLM may be automaticallylocated using GPS. Another DLM may be automatically located using celltower triangulation. A third DLM may be automatically located usingwithin range proximity. An ILM can be automatically located at a singlelocation, or different locations over time, relative these threedifferently located DLMs. The automatically detected location of the ILMmay be determined using a form of triangulation relative the three DLMsjust discussed, even though each DLM had a different direct locationmethod used. In a preferred embodiment, industry standard IEEE 802.11Wi-Fi is used to locate (triangulate) an ILM relative a plurality ofDLMs (e.g. TDOA in one embodiment). This standard is prolific among morecompute trended MSs. Any of the family of 802.11 wave forms such as802.11a, 802.11b, 802.11g, or any other similar class of wave spectrumcan be used, and the same spectrum need not be used between a single ILMand multiple DLMs. 802.x used herein generally refers to the many802.whatever variations.

Another advantage herein is to make use of existing marketplacecommunications hardware, communications software interfaces, andcommunications methods and location methods where possible to accomplishlocating an MS relative one or more other MSs. While 802.x is widespreadfor Wi-Fi communications, other RF wave forms can be used (e.g. cellphone to cell tower communications). In fact, any wave spectrum forcarrying data applies herein.

Still another advantage is for support of heterogeneous locatabledevices. Different people like different types of devices as describedabove. Complete automation of locating functionality can be provided toa device through local automatic location detection means, or byautomatic location detection means remote to the device. Also, an ILMcan be located relative a laptop, a cell phone, and a PDA (i.e.different device types).

Yet another advantage is to prevent the unnecessary storing of largeamounts of positioning data for a network of MSs. Keeping positioningdata for knowing the whereabouts of all devices can be expensive interms of storage, infrastructure, performance, backup, and disasterrecovery. A preferred embodiment simply uses a distributed approach todetermining locations of MSs without the overhead of an all-knowingdatabase maintained somewhere. Positions of MSs can be determined “onthe fly” without storing information in a master database. However,there are embodiments for storing a master database, or a subsetthereof, to configurable storage destinations, when it makes sense. Asubset can be stored at a MS.

Another advantage includes making use of existing location equipped MSsto expand the network of locatable devices by locating non-equipped MSsrelative the location of equipped MSs. MSs themselves help increasedimensions of the locatable network of MSs. The locatable network of MSsis referred to as an LN-Expanse (i.e. Location-Network Expanse). AnLN-Expanse dynamically grows and shrinks based on where MSs are locatedat a particular time. For example, as users travel with their personalMSs, the personal MSs themselves define the LN-Expanse since thepersonal MSs are used to locate other MSs. An ILM simply needs locationawareness relative located MSs (DLMs and/or ILMs).

Yet another advantage is a MS interchangeably taking on the role of aDLM or ILM as it travels. MSs are chameleons in this regard, in responseto location technologies that happen to be available. A MS may beequipped for DLM capability, but may be in a location at some time wherethe capability is inoperable. In these situations the DLM takes on therole of an ILM. When the MS again enters a location where it can be aDLM, it automatically takes on the role of the DLM. This is veryimportant, in particular for emergency situations. A hiker has a seriousaccident in the mountains which prevents GPS equipped DLM capabilityfrom working. Fortunately, the MS automatically takes on the role of anILM and is located within the vicinity of neighboring (nearby) MSs. Thisallows the hiker to communicate his location, operate useful locationalapplication functions and features at his MS, and enable emergency helpthat can find him.

It is a further advantage that MS locations be triangulated using anywave forms (e.g. RF, microwaves, infrared, visible light, ultraviolet,X-ray, gamma ray). X-ray and gamma ray applications are special in thatsuch waves are harmful to humans in short periods of times, and suchapplications should be well warranted to use such wave forms. In somemedical embodiments, micro-machines may be deployed within a human body.Such micro-machines can be equipped as MSs. Wave spectrums available atthe time of deployment can be used by the MSs for determining exactpositions when traveling through a body.

It is another advantage to use TDOA (Time Difference Of Arrival), AOA(Angle Of Arrival), and Missing Part Triangulation (MPT) when locating aMS. TDOA uses time information to determine locations, for example fordistances of sides of a triangle. AOA uses angles of arrival to antennasto geometrically assess where a MS is located by intersecting linesdrawn from the antennas with detected angles. MPT is disclosed herein asusing combinations of AOA and TDOA to determine a location. Exclusivelyusing all AOA or exclusively using all TDOA is not necessary. MPT can bea direct method for locating MSs.

Yet another advantage is to locate MSs using Assisted Direct LocationTechnology (ADLT). ADLT is disclosed herein as using direct(conventional) location capability together with indirect locationcapability to confidently determine the location of a MS.

Still another advantage is to permit manual specification foridentifying the location of a MS (a DLM). The manual location can thenin turn be used to facilitate locating other MSs. A user interface maybe used for specification of a DLM location. The user interface can belocal, or remote, to the DLM. Various manual specification methods aredisclosed. Manual specification is preferably used with less mobile MSs,or existing MSs such as those that use dodgeball.com (trademark ofGoogle). The confidence value depends on how the location is specified,whether or not it was validated, and how it changes when the MS movesafter being manually set. Manual specification should have limited scopein an LN-expanse unless inaccuracies can be avoided.

Another advantage herein is locating a MS using any of the methodologiesabove, any combinations of the methodologies above, and any combinationsof direct and/or indirect location methods described.

Another advantage is providing synergy between different locatingtechnologies for smooth operations as an MS travels. There are largenumbers of methods and combinations of those methods for keeping an MSinformed of its whereabouts. Keeping an MS informed of its whereaboutsin a timely manner is critical in ensuring LBX operate optimally, andfor ensuring nearby MSs without certain locating technologies can inturn be located.

It is another advantage for locating an MS with multiple locationtechnologies during its travels, and in using the best of breed datafrom multiple location technologies to infer a MS location confidently.Confidence values are associated with reference location information toensure an MS using the location information can assess accuracy. A DLMis usually an “affirmifier”. An affirmifier is an MS with itswhereabouts information having high confidence of accuracy and can serveas a reference for other MSs. An ILM can also be an affirmifier providedthere is high confidence that the ILM location is known. An MS (e.g.ILM) may be a “pacifier”. A pacifier is an MS having locationinformation for its whereabouts with a low confidence for accuracy.While it can serve as a reference to other ILMs, it can only do so bycontributing a low confidence of accuracy.

It is an advantage to synergistically make use of the large number oflocating technologies available to prevent one particular type oftechnology to dominate others while using the best features of each toassess accurate mobile locations of MSs.

A further advantage is to leverage a data processing system withcapability of being located for co-locating another data processingsystem without any capability of being located. For example, a driverowns an older model automobile, has a useful second data processingsystem in the automobile without means for being automatically located.The driver also own a cell phone, called a first data processing system,which does have means for being automatically located. The location ofthe first data processing system can be shared with the second dataprocessing system for locating the second data processing system.Further still, the second data processing system without means for beingautomatically located is located relative a first set (plurality) ofdata processing systems which are not at the same location as the seconddata processing system. So, data processing systems are automaticallylocated relative at least one other data processing which can beautomatically located.

Another advantage is a LBX enabled MS includes a service informantcomponent for keeping a supervisory service informed. This prevents anMS from operating in total isolation, and prevents an MS from operatingin isolation with those MSs that are within its vicinity (e.g. withinmaximum range 1306) at some point in time, but to also participate whenthe same MSs are great distances from each other. There are LBX whichwould fit well into an LBS model, but a preferred embodiment chooses touse the LBX model. For example, multiple MS users are seeking to carpoolto and from a common destination. The service informant component canperform timely updates to a supervisory service for route comparisonsbetween MSs, even though periods of information are maintained only atthe MSs. For example, users find out that they go to the same churchwith similar schedules, or coworkers find out they live nearby and haveidentical work schedules. The service informant component can keep aservice informed of MS whereabouts to facilitate novel LBX applications.

It is a further advantage in leveraging the vast amount of MS WiFideployment underway in the United States. More widespread WiFiavailability enhances the ability for well performing peer to peer typesof features and functionality disclosed.

It is a further advantage to prevent unnecessary established connectionsfrom interfering with successfully triangulating a MS position. As theMS roams and encounters various wave spectrum signals, that is all thatis required for determining the MS location. Broadcast signalingcontains the necessary location information for automatically locatingthe MS.

Yet another advantage is to leverage Network Time Protocol (NTP) foreliminating bidirectional communications in determining Time of Arrival(TOA) and TDOA (Time Difference Of Arrival) measurements (TDOA as usedin the disclosure generally refers to both TOA and TDOA). NTP enables asingle unidirectional transmission of data to carry all that isnecessary in determining TDOA, provided the sending data processingsystem and the receiving data processing system are NTP synchronized toan adequate granulation of time.

A further advantage herein is to leverage existing “usualcommunications” data transmissions for carrying new data that is ignoredby existing MS processing, but observed by new MS processing, forcarrying out processing maximizing location functions and featuresacross a large geography. Alternatively, new data can be transmittedbetween systems for the same functionality.

Further features and advantages of the disclosure, as well as thestructure and operation of various embodiments of the disclosure, aredescribed in detail below with reference to the accompanying drawings.In the drawings, like reference numbers generally indicate identical,functionally similar, and/or structurally similar elements. The drawingin which an element first appears is indicated by the leftmost digit(s)in the corresponding reference number, except that reference numbers 1through 99 may be found on the first 4 drawings of FIGS. 1A through 1D.None of the drawings, discussions, or materials herein is to beinterpreted as limiting to a particular embodiment. The broadestinterpretation is intended. Other embodiments accomplishing samefunctionality are within the spirit and scope of this disclosure. Itshould be understood that information is presented by example and manyembodiments exist without departing from the spirit and scope of thisdisclosure.

BRIEF DESCRIPTION OF THE DRAWINGS

There is no guarantee that there are descriptions in this specificationfor explaining every novel feature found in the drawings. The presentdisclosure will be described with reference to the accompanyingdrawings, wherein:

FIG. 1A depicts a preferred embodiment high level examplecomponentization of a MS in accordance with the present disclosure;

FIG. 1B depicts a Location Based eXchanges (LBX) architecturalillustration for discussing the present disclosure;

FIG. 1C depicts a Location Based Services (LBS) architecturalillustration for discussing prior art of the present disclosure;

FIG. 1D depicts a block diagram of a data processing system useful forimplementing a MS, ILM, DLM, centralized server, or any other dataprocessing system disclosed herein;

FIG. 1E depicts a network illustration for discussing variousdeployments of whereabouts processing aspects of the present disclosure;

FIG. 2A depicts an illustration for describing automatic location of aMS through the MS coming into range of a stationary cellular tower;

FIG. 2B depicts an illustration for describing automatic location of aMS through the MS coming into range of some stationary antenna;

FIG. 2C depicts an illustration for discussing an example ofautomatically locating a MS through the MS coming into range of somestationary antenna;

FIG. 2D depicts a flowchart for describing a preferred embodiment of aservice whereabouts update event of an antenna in-range detected MS whenMS location awareness is monitored by a stationary antenna or celltower;

FIG. 2E depicts a flowchart for describing a preferred embodiment of anMS whereabouts update event of an antenna in-range detected MS when MSlocation awareness is monitored by the MS;

FIG. 2F depicts a flowchart for describing a preferred embodiment of aprocedure for inserting a Whereabouts Data Record (WDR) to an MSwhereabouts data queue;

FIG. 3A depicts a locating by triangulation illustration for discussingautomatic location of a MS;

FIG. 3B depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a triangulated MS when MS location awarenessis monitored by some remote service;

FIG. 3C depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a triangulated MS when MS location awarenessis monitored by the MS;

FIG. 4A depicts a locating by GPS triangulation illustration fordiscussing automatic location of a MS;

FIG. 4B depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a GPS triangulated MS;

FIG. 5A depicts a locating by stationary antenna triangulationillustration for discussing automatic location of a MS;

FIG. 5B depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a stationary antenna triangulated MS;

FIG. 6A depicts a flowchart for describing a preferred embodiment of aservice whereabouts update event of a physically or logically connectedMS;

FIG. 6B depicts a flowchart for describing a preferred embodiment of aMS whereabouts update event of a physically or logically connected MS;

FIGS. 7A, 7B and 7C depict a locating by image sensory illustration fordiscussing automatic location of a MS;

FIG. 7D depicts a flowchart for describing a preferred embodiment ofgraphically locating a MS, for example as illustrated by FIGS. 7Athrough 7C;

FIG. 8A heterogeneously depicts a locating by arbitrary wave spectrumillustration for discussing automatic location of a MS;

FIG. 8B depicts a flowchart for describing a preferred embodiment oflocating a MS through physically contacting the MS;

FIG. 8C depicts a flowchart for describing a preferred embodiment oflocating a MS through a manually entered whereabouts of the MS;

FIG. 9A depicts a table for illustrating heterogeneously locating a MS;

FIG. 9B depicts a flowchart for describing a preferred embodiment ofheterogeneously locating a MS;

FIGS. 10A and 10B depict an illustration of a Locatable Network expanse(LN-Expanse) for describing locating of an ILM with all DLMs;

FIG. 10C depicts an illustration of a Locatable Network expanse(LN-Expanse) for describing locating of an ILM with an ILM and DLM;

FIGS. 10D, 10E, and 10F depict an illustration of a Locatable Networkexpanse (LN-Expanse) for describing locating of an ILM with all ILMs;

FIGS. 10G and 10H depict an illustration for describing the infinitereach of a Locatable Network expanse (LN-Expanse) according to MSs;

FIG. 10I depicts an illustration of a Locatable Network expanse(LN-Expanse) for describing a supervisory service;

FIG. 11A depicts a preferred embodiment of a Whereabouts Data Record(WDR) 1100 for discussing operations of the present disclosure;

FIGS. 11B, 11C and 11D depict an illustration for describing variousembodiments for determining the whereabouts of an MS;

FIG. 11E depicts an illustration for describing various embodiments forautomatically determining the whereabouts of an MS;

FIG. 12 depicts a flowchart for describing an embodiment of MSinitialization processing;

FIGS. 13A through 13C depict an illustration of data processing systemwireless data transmissions over some wave spectrum;

FIG. 14A depicts a flowchart for describing a preferred embodiment of MSLBX configuration processing;

FIG. 14B depicts a continued portion flowchart of FIG. 14A fordescribing a preferred embodiment of MS LBX configuration processing;

FIG. 15A depicts a flowchart for describing a preferred embodiment ofDLM role configuration processing;

FIG. 15B depicts a flowchart for describing a preferred embodiment ofILM role configuration processing;

FIG. 15C depicts a flowchart for describing a preferred embodiment of aprocedure for Manage List processing;

FIG. 16 depicts a flowchart for describing a preferred embodiment of NTPuse configuration processing;

FIG. 17 depicts a flowchart for describing a preferred embodiment of WDRmaintenance processing;

FIG. 18 depicts a flowchart for describing a preferred embodiment of aprocedure for variable configuration processing;

FIG. 19 depicts an illustration for describing a preferred embodimentmultithreaded architecture of peer interaction processing of a MS inaccordance with the present disclosure;

FIG. 20 depicts a flowchart for describing a preferred embodiment of MSwhereabouts broadcast processing;

FIG. 21 depicts a flowchart for describing a preferred embodiment of MSwhereabouts collection processing;

FIG. 22 depicts a flowchart for describing a preferred embodiment of MSwhereabouts supervisor processing;

FIG. 23 depicts a flowchart for describing a preferred embodiment of MStiming determination processing;

FIG. 24A depicts an illustration for describing a preferred embodimentof a thread request queue record;

FIG. 24B depicts an illustration for describing a preferred embodimentof a correlation response queue record;

FIG. 24C depicts an illustration for describing a preferred embodimentof a WDR request record;

FIG. 25 depicts a flowchart for describing a preferred embodiment of MSWDR request processing;

FIG. 26A depicts a flowchart for describing a preferred embodiment of MSwhereabouts determination processing;

FIG. 26B depicts a flowchart for describing a preferred embodiment ofprocessing for determining a highest possible confidence whereabouts;

FIG. 27 depicts a flowchart for describing a preferred embodiment ofqueue prune processing;

FIG. 28 depicts a flowchart for describing a preferred embodiment of MStermination processing;

FIG. 29A depicts a flowchart for describing a preferred embodiment of aprocess for starting a specified number of threads in a specified threadpool; and

FIG. 29B depicts a flowchart for describing a preferred embodiment of aprocedure for terminating the process started by FIG. 29A.

DETAILED DESCRIPTION OF THE INVENTION

With reference now to detail of the drawings, the present disclosure isdescribed. Obvious error handling is omitted from the flowcharts inorder to focus on the key aspects of the present disclosure. Obviouserror handling includes database I/O errors, field validation errors,errors as the result of database table/data constraints or unique keys,data access errors, communications interface errors or packet collision,hardware failures, checksum validations, bit errordetections/corrections, and any other error handling as well known tothose skilled in the relevant art in context of this disclosure. Asemicolon may be used in flowchart blocks to represent, and separate,multiple blocks of processing within a single physical block. Thisallows simpler flowcharts with less blocks in the drawings by placingmultiple blocks of processing description in a single physical block ofthe flowchart. Flowchart processing is intended to be interpreted in thebroadest sense by example, and not for limiting methods of accomplishingthe same functionality. Preferably, field validation in the flowchartschecks for SQL injection attacks, communications protocol sniff and hackattacks, preventing of spoofing MS addresses, syntacticalappropriateness, and semantics errors where appropriate. Disclosed userinterface processing and/or screenshots are also preferred embodimentexamples that can be implemented in other ways without departing fromthe spirit and scope of this disclosure. Alternative user interfaces(since this disclosure is not to be limiting) will use similarmechanisms, but may use different mechanisms without departing from thespirit and scope of this disclosure.

Locational terms such as whereabouts, location, position, area,destination, perimeter, radius, geofence, situational location, or anyother related two or three dimensional locational term used herein todescribed position(s) and/or locations and/or whereabouts is to beinterpreted in the broadest sense. Location field 1100 c may include anarea (e.g. on earth), a point (e.g. on earth), or a three dimensionalbounds in space. In another example, a radius may define a sphere inspace, rather than a circle in a plane. In some embodiments, a planetfield forms part of the location (e.g. Earth, Mars, etc as part of field1100 c) for which other location information (e.g. latitude andlongitude on Mars also part of field 1100 c) is relative. In someembodiments, elevations (or altitudes) from known locatable point(s),distances from origin(s) in the universe, etc. can denote where exactlyis a point of three dimensional space, or three dimensional sphere,area, or solid, is located. That same point can provide a mathematicalreference to other points of the solid area/region in space.Descriptions for angles, pitches, rotations, etc from some referencepoint(s) may be further provided. Three dimensional areas/regionsinclude a conical shape, cubical shape, spherical shape, pyramidalshape, irregular shapes, or any other shape either manipulated with athree dimensional graphic interface, or with mathematical modeldescriptions. Areas/regions in space can be occupied by a MS, passedthrough (e.g. by a traveler) by a MS, or referenced throughconfiguration by a MS. In a three dimensional embodiment,nearby/nearness is determined in terms of three dimensional information,for example, a spherical radius around one MS intersecting a sphericalradius around another MS. In a two dimensional embodiment,nearby/nearness is determined in terms of two dimensional information,for example, a circular radius around one MS intersecting a circularradius around another MS. Points can be specified as a point in a x-y-zplane, a point in polar coordinates, or the like, perhaps the center ofa planet (e.g. Earth) or the Sun, some origin in the Universe, or anyother origin for distinctly locating three dimensional location(s),positions, or whereabouts in space. Elevation (e.g. for earth, or someother planet, etc) may be useful to the three dimensional point oforigin, and/or for the three dimensional region in space. A region inspace may also be specified with connecting x-y-z coordinates togetherto bound the three dimensional region in space. There are many methodsfor representing a location (field 1100 c) without departing from thespirit and scope of this disclosure. MSs, for example as carried byusers, can travel by airplane through three dimensional areas/regions inspace, or travel under the sea through three dimensional regions inspace.

Various embodiments of communications between MSs, or an MS andservice(s), will share channels (e.g. frequencies) to communicate,depending on when in effect. Sharing a channel will involve carryingrecognizable and processable signature to distinguish transmissions forcarrying data. Other embodiments of communications between MSs, or an MSand service(s), will use distinct channels to communicate, depending onwhen in effect. The number of channels that can be concurrently listenedon and/or concurrently transmitted on by a data processing system willaffect which embodiments are preferred. The number of usable channelswill also affect which embodiments are preferred. This disclosure avoidsunnecessary detail in different communication channel embodiments so asto not obfuscate novel material. Independent of various channelembodiments within the scope and spirit of the present disclosure, MSscommunicate with other MSs in a peer to peer manner, in some aspectslike automated walkie-talkies.

Novel features disclosed herein need not be provided as all or none.Certain features may be isolated in some MS embodiments, or may appearas any subset of features and functionality in other embodiments.

Location Based eXchanqes (LBX) Architecture

FIG. 1A depicts a preferred embodiment high level examplecomponentization of a MS in accordance with the present disclosure. A MS2 includes processing behavior referred to as LBX Character 4 and OtherCharacter 32. LBX character 4 provides processing behavior causing MS 2to take on the character of a Location Based Exchange (LBX) MS accordingto the present disclosure. Other Character 32 provides processingbehavior causing MS to take on character of prior art MSs in context ofthe type of MS. Other character 32 includes at least other processingcode 34, other processing data 36, and other resources 38, all of whichare well known to those skilled in the art for prior art MSs. In someembodiments, LBX character 4 components may, or may not, make use ofother character 32 components 34, 36, and 38. Other character 32components may, or may not, make use of LBX character 4 components 6through 30.

LBX character 4 preferably includes at least Peer Interaction Processing(PIP) code 6, Peer Interaction Processing (PIP) data 8, self managementprocessing code 18, self management processing data 20, WDR queue 22,send queue 24, receive queue 26, service informant code 28, and LBXhistory 30. Peer interaction processing (PIP) code 6 comprisesexecutable code in software, firmware, or hardware form for carrying outLBX processing logic of the present disclosure when interacting withanother MS. Peer interaction processing (PIP) data 8 comprises datamaintained in any sort of memory of MS 2, for example hardware memory,flash memory, hard disk memory, a removable memory device, or any othermemory means accessible to MS 2. PIP data 8 contains intelligence datafor driving LBX processing logic of the present disclosure wheninteracting with other MSs. Self management processing code 18 comprisesexecutable code in software, firmware, or hardware form for carrying outthe local user interface LBX processing logic of the present disclosure.Self management processing data 20 contains intelligence data fordriving processing logic of the present disclosure as disclosed forlocally maintained LBX features. WDR queue 22 contains Whereabouts DataRecords (WDRs) 1100, and is a First-In-First-Out (FIFO) queue whenconsidering housekeeping for pruning the queue to a reasonable trailinghistory of inserted entries (i.e. remove stale entries). WDR queue 22 ispreferably designed with the ability of queue entry retrieval processingsimilar to Standard Query Language (SQL) querying, wherein one or moreentries can be retrieved by querying with a conditional match on anydata field(s) of WDR 1100 and returning lists of entries in order by anascending or descending key on one or any ascending/descending orderedlist of key fields.

All disclosed queues (e.g. 22, 24, 26, 1980 and 1990 (See FIG. 19)) areimplemented with an appropriate thread-safe means of queue entry peeking(makes copy of sought queue entry without removing), discarding,retrieval, insertion, and queue entry field sorted search processing.Queues are understood to have an associated implicit semaphore to ensureappropriate synchronous access to queue data in a multi-threadedenvironment to prevent data corruption and misuse. Such queue interfacesare well known in popular operating systems. In MS operating systemenvironments which do not have an implicit semaphore protected queuescheme, queue accesses in the present disclosure flowcharts are to beunderstood to have a previous request to a queue-assigned semaphore lockprior to queue access, and a following release of the semaphore lockafter queue access. Operating systems without semaphore control may usemethods to achieve similar thread-safe synchronization functionality.Queue functionality may be accomplished with lists, arrays, databases(e.g. SQL) and other methodologies without departing from the spirit andscope of queue descriptions herein.

Queue 22 alternate embodiments may maintain a plurality of WDR queueswhich segregate WDRs 1100 by field(s) values to facilitate timelyprocessing. WDR queue 22 may be at least two (2) separate queues: onefor maintaining the MS 2 whereabouts, and one for maintainingwhereabouts of other MSs. WDR queue 22 may be a single instance WDR 1100in some embodiments which always contains the most current MS 2whereabouts for use by MS 2 applications (may use a sister queue 22 formaintaining WDRs from remote MSs). At least one entry is to bemaintained to WDR queue 22 at all times for MS 2 whereabouts.

Send queue 24 (Transmit (Tx) queue) is used to send communications data,for example as intended for a peer MS within the vicinity (e.g. nearbyas indicated by maximum range 1306) of the MS 2. Receive queue 26(Receive (Rx) queue) is used to receive communications data, for examplefrom peer MSs within the vicinity (e.g. nearby as indicated by maximumrange 1306) of the MS 2. Queues 24 and 26 may also each comprise aplurality of queues for segregating data thereon to facilitateperformance in interfacing to the queues, in particular when differentqueue entry types and/or sizes are placed on the queue. A queueinterface for sending/receiving data to/from the MS is optimal in amulti-threaded implementation to isolate communications transport layersto processing behind the send/receive queue interfaces, but alternateembodiments may send/receive data directly from a processing threaddisclosed herein. Queues 22, 24, and/or 26 may be embodied as a purelydata form, or SQL database, maintained at MS 2 in persistent storage,memory, or any other storage means. In some embodiments, queues 24 and26 are not necessary since other character 32 will already haveaccessible resources for carrying out some LBX character 4 processing.

Queue embodiments may contain fixed length records, varying lengthrecords, pointers to fixed length records, or pointers to varying lengthrecords. If pointers are used, it is assumed that pointers may bedynamically allocated for record storage on insertions and freed uponrecord use after discards or retrievals.

As well known to those skilled in the art, when a thread sends on aqueue 24 in anticipation of a corresponding response, there iscorrelation data in the data sent which is sought in a response receivedby a thread at queue 26 so the sent data is correlated with the receiveddata. In a preferred embodiment, correlation is built using around-robin generated sequence number placed in data for sending alongwith a unique MS identifier (MS ID). If data is not already encrypted incommunications, the correlation can be encrypted. While the unique MSidentifier (MS ID) may help the MS identify which (e.g. wireless) datais destined for it, correlation helps identify which data at the MScaused the response. Upon receipt of data from a responder at queue 26,correlation processing uses the returned correlation (e.g. field 1100 m)to correlate the sent and received data. In preferred embodiments, thesequence number is incremented each time prior to use to ensure a uniquenumber, otherwise it may be difficult to know which data received is aresponse to which data was sent, in particular when many data packetsare sent within seconds. When the sequence number reaches a maximumvalue (e.g. 2**32−1), then it is round-robinned to 0 and is incrementedfrom there all over again. This assures proper correlation of databetween the MS and responders over time. There are other correlationschemes (e.g. signatures, random number generation, checksum counting,bit patterns, date/time stamp derivatives) to accomplish correlationfunctionality. If send and receive queues of Other Character 32 areused, then correlation can be used in a similar manner to correlate aresponse with a request (i.e. a send with a receipt).

There may be good reason to conceal the MS ID when transmitting itwirelessly. In this embodiment, the MS ID is a dependable andrecognizable derivative (e.g. a pseudo MS ID) that can be detected incommunications traffic by the MS having the pseudo MS ID, whileconcealing the true MS ID. This would conceal the true MS ID fromwould-be hackers sniffing wireless protocol. The derivative can alwaysbe reliably the same for simplicity of being recognized by the MS whilebeing difficult to associate to a particular MS. Further still, a moreprotected MS ID (from would-be hackers that take time to deduce how anMS ID is scrambled) can itself be a dynamically changing correlationanticipated in forthcoming communications traffic, thereby concealingthe real MS ID (e.g. phone number or serial number), in particular whenanticipating traffic in a response, yet still useful for directingresponses back to the originating MS (with the pseudo MS ID (e.g.correlation)). A MS would know which correlation is anticipated in aresponse by saving it to local storage for use until it becomes used(i.e. correlated in a matching response), or becomes stale. In anotherembodiment, a correlation response queue (like CR queue 1990) can bedeployed to correlate responses with requests that contain differentcorrelations for pseudo MS IDs. In all embodiments, the MS ID (or pseudoMS ID) of the present disclosure should enable targeting communicationstraffic to the MS.

Service informant code 28 comprises executable code in software,firmware, or hardware form for carrying out of informing a supervisoryservice. The present disclosure does not require a connected webservice, but there are features for keeping a service informed withactivities of MS LBX. Service informant code 28 can communicate asrequested any data 8, 20, 22, 24, 26, 30, 36, 38, or any other dataprocessed at MS 2.

LBX history 30 contains historical data useful in maintaining at MS 2,and possibly useful for informing a supervisory service through serviceinformant code 28. LBX History 30 preferably has an associated thread ofprocessing for keeping it pruned to the satisfaction of a user of MS 2(e.g. prefers to keep last 15 days of specified history data, and 30days of another specified history data, etc). With a suitable userinterface to MS 2, a user may browse, manage, alter, delete, or add toLBX History 30 as is relevant to processing described herein. Serviceinformant code 28 may be used to cause sending of an outbound email, SMSmessage, outbound data packet, or any other outbound communication inaccordance with LBX of the MS.

PIP data 8 preferably includes at least permissions 10, charters 12,statistics 14, and a service directory 16. Permissions 10 are configuredto grant permissions to other MS users for interacting the way the userof MS 2 desires for them to interact. Therefore, permissions 10 containpermissions granted from the MS 2 user to other MS users. In anotherembodiment, permissions 10 additionally, or alternatively, containpermissions granted from other MS users to the MS 2 user. Permissionsare maintained completely local to the MS 2. Charters 12 provide LBXbehavior conditional expressions for how MSs should interact with MS 2.Charters 12 are configured by the MS 2 user for other MS users. Inanother embodiment, charters 12 additionally, or alternatively, areconfigured by other MS users for the MS 2 user. Some chartersexpressions depend on permissions 10. Statistics 14 are maintained at MS2 for reflecting peer (MS) to peer (MS) interactions of interest thatoccurred at MS 2. In another embodiment, statistics 14 additionally, oralternatively, reflect peer (MS) to peer (MS) interactions that occurredat other MSs, preferably depending on permissions 10. Service informantcode 28 may, or may not, inform a service of statistics 14 maintained.Service directory 16 includes routing entries for how MS 2 will find asought service, or how another MS can find a sought service through MS2.

In some embodiments, any code (e.g. 6, 18, 28, 34, 38) can access,manage, use, alter, or discard any data (e.g. 8, 20, 22, 24, 26, 30, 36,38) of any other component in MS 2. Other embodiments may choose to keepprocessing of LBX character 4 and other character 32 disjoint from eachother. Rectangular component boundaries are logical componentrepresentations and do not have to delineate who has access to what. MS(also MSs) references discussed herein in context for the new and usefulfeatures and functionality disclosed is understood to be an MS 2 (MSs2).

FIG. 1B depicts a Location Based eXchanges (LBX) architecturalillustration for discussing the present disclosure. LBX MSs are peers toeach other for locational features and functionality. An MS 2communicates with other MSs without requiring a service for interaction.For example, FIG. 1B depicts a wireless network 40 of five (5) MSs. Eachis able to directly communicate with others that are in the vicinity(e.g. nearby as indicated by maximum range 1306). In a preferredembodiment, communications are limited reliability wireless broadcastdatagrams having recognizable data packet identifiers. In anotherembodiment, wireless communications are reliable transport protocolscarried out by the MSs, such as TCP/IP. In other embodiments, usualcommunications data associated with other character 32 include new data(e.g. Communications Key 1304) in transmissions for being recognized byMSs within the vicinity. For example, as an MS conventionallycommunicates, LBX data is added to the protocol so that other MSs in thevicinity can detect, access, and use the data. The advantage to this isthat as MSs use wireless communications to carry out conventionalbehavior, new LBX behavior is provided by simply incorporatingadditional information (e.g. Communications Key 1304) to existingcommunications.

Regardless of the embodiment, an MS 2 can communicate with any of itspeers in the vicinity using methods described below. Regardless of theembodiment, a communication path 42 between any two MSs is understood tobe potentially bidirectional, but certainly at least unidirectional. Thebidirectional path 42 may use one communications method for onedirection and a completely different communications method for theother, but ultimately each can communicate to each other. Whenconsidering that a path 42 comprises two unidirectional communicationspaths, there are N*(N−1) unidirectional paths for N MSs in a network 40.For example, 10 MSs results in 90 (i.e. 1*9) one way paths ofcommunications between all 10 MSs for enabling them to talk to eachother. Sharing of the same signaling channels is preferred to minimizethe number of MS threads listening on distinct channels. Flowcharts areunderstood to process at incredibly high processing speeds, inparticular for timely communications processing.

FIG. 1C depicts a Location Based Services (LBS) architecturalillustration for discussing prior art of the present disclosure. Inorder for a MS to interact for LBS with another MS, there is servicearchitecture 44 for accomplishing the interaction. For example, todetect that MS 1 is nearby MS N, the service is indispensably involvedin maintaining data and carrying out processing. For example, to detectthat MS 1 is arriving to, or departing from, a geofenced perimeter areaconfigured by MS N, the service was indispensably involved inmaintaining data and carrying out processing. For example, for MS N tolocate MS 1 on a live map, the service was indispensably involved inmaintaining data and carrying out processing. In another example, togrant and revoke permissions from MS 1 to MS N, the service wasindispensably involved in maintaining data and carrying out processing.While it is advantageous to require a single bidirectional path 46 foreach MS (i.e. two unidirectional communications paths; (2*N)unidirectional paths for N MSs), there are severe requirements forservice(s) when there are lots of MSs (i.e. when N is large). WirelessMSs have advanced beyond cell phones, and are capable of housingsignificant parallel processing, processing speed, increased wirelesstransmission speeds and distances, increased memory, and richerfeatures.

FIG. 1D depicts a block diagram of a data processing system useful forimplementing a MS, ILM, DLM, centralized server, or any other dataprocessing system described herein. An MS 2 is a data processing system50. Data processing system 50 includes at least one processor 52 (e.g.Central Processing Unit (CPU)) coupled to a bus 54. Bus 54 may include aswitch, or may in fact be a switch 54 to provide dedicated connectivitybetween components of data processing system 50. Bus (and/or switch) 54is a preferred embodiment coupling interface between data processingsystem 50 components. The data processing system 50 also includes mainmemory 56, for example, random access memory (RAM). Memory 56 mayinclude multiple memory cards, types, interfaces, and/or technologies.The data processing system 50 may include secondary storage devices 58such as persistent storage 60, and/or removable storage device 62, forexample as a compact disk, floppy diskette, USB flash, or the like, alsoconnected to bus (or switch) 54. In some embodiments, persistent storagedevices could be remote to the data processing system 50 and coupledthrough an appropriate communications interface. Persistent storage 60may include flash memory, disk drive memory, magnetic, charged, orbubble storage, and/or multiple interfaces and/or technologies, perhapsin software interface form of variables, a database, shared memory, etc.

The data processing system 50 may also include a display deviceinterface 64 for driving a connected display device (not shown). Thedata processing system 50 may further include one or more inputperipheral interface(s) 66 to input devices such as a keyboard, keypad,Personal Digital Assistant (PDA) writing implements, touch interfaces,mouse, voice interface, or the like. User input (“user input”, “userevents” and “user actions” used interchangeably) to the data processingsystem are inputs accepted by the input peripheral interface(s) 66. Thedata processing system 50 may still further include one or more outputperipheral interface(s) 68 to output devices such as a printer,facsimile device, or the like. Output peripherals may also be availablevia an appropriate interface.

Data processing system 50 will include a communications interface(s) 70for communicating to another data processing system 72 via analog signalwaves, digital signal waves, infrared proximity, copper wire, opticalfiber, or other wave spectrums described herein. A MS may have multiplecommunications interfaces 70 (e.g. cellular connectivity, 802.x, etc).Other data processing system 72 may be an MS. Other data processingsystem 72 may be a service. Other data processing system 72 is a servicedata processing system when MS 50 communicates to other data processingsystem 72 by way of service informant code 28. In any case, the MS andother data processing system are said to be interoperating whencommunicating.

Data processing system programs (also called control logic) may becompletely inherent in the processor(s) 52 being a customizedsemiconductor, or may be stored in main memory 56 for execution byprocessor(s) 52 as the result of a read-only memory (ROM) load (notshown), or may be loaded from a secondary storage device into mainmemory 56 for execution by processor(s) 52. Such programs, whenexecuted, enable the data processing system 50 to perform features ofthe present disclosure as discussed herein. Accordingly, such dataprocessing system programs represent controllers of the data processingsystem.

In some embodiments, the disclosure is directed to a control logicprogram product comprising at least one processor 52 having controllogic (software, firmware, hardware microcode) stored therein. Thecontrol logic, when executed by processor(s) 52, causes the processor(s)52 to provide functions of the disclosure as described herein. Inanother embodiment, this disclosure is implemented primarily inhardware, for example, using a prefabricated component state machine (ormultiple state machines) in a semiconductor element such as a processor52.

Those skilled in the art will appreciate various modifications to thedata processing system 50 without departing from the spirit and scope ofthis disclosure. A data processing system, and more particularly a MS,preferably has capability for many threads of simultaneous processingwhich provide control logic and/or processing. These threads can beembodied as time sliced threads of processing on a single hardwareprocessor, multiple processors, multi-core processors, Digital SignalProcessors (DSPs), or the like, or combinations thereof. Suchmulti-threaded processing can concurrently serve large numbers ofconcurrent MS tasks. Concurrent processing may be provided with distincthardware processing and/or as appropriate software driven time-slicedthread processing. Those skilled in the art recognize that havingmultiple threads of execution on an MS is accomplished in many differentways without departing from the spirit and scope of this disclosure.This disclosure strives to deploy software to existing MS hardwareconfigurations, but the disclosed software can be deployed as burned-inmicrocode to new hardware of MSs.

Data processing aspects of drawings/flowcharts are preferablymulti-threaded so that many MSs and applicable data processing systemsare interfaced with in a timely and optimal manner. Data processingsystem 50 may also include its own clock mechanism (not shown), if notan interface to an atomic clock or other clock mechanism, to ensure anappropriately accurate measurement of time in order to appropriatelycarry out processing described below. In some embodiments, Network TimeProtocol (NTP) is used to keep a consistent universal time for MSs andother data processing systems in communications with MSs. This is mostadvantageous to prevent unnecessary round-tripping of data between dataprocessing systems to determine timing (e.g. Time Difference of Arrival(TDOA)) measurements. A NTP synchronized date/time stamp maintained incommunications is compared by a receiving data processing system forcomparing with its own NTP date/time stamp to measure TOA (time ofarrival (i.e. time taken to arrive)). Of course, in the absence of NTPused by the sender and receiver, TOA is also calculated in abidirectional transmission using correlation. In this disclosure, TOAmeasurements from one location technology are used for triangulatingwith TOA measurements from another location technology, not just fordetermining “how close”. Therefore, TDOA terminology is generally usedherein to refer to the most basic TOA measurement of a wave spectrumsignal being the difference between when it was sent and when it wasreceived. TDOA is also used to describe using the difference of suchmeasurements to locate (triangulate). NTP use among participatingsystems has the advantage of a single unidirectional broadcast datapacket containing all a receiving system requires to measure TDOA, byknowing when the data was sent (date/time stamp in packet) and when thedata was received (signal detected and processed by receiving system). ANTP clock source (e.g. atomic clock) used in a network is to bereasonably granular to carry out measurements, and ensures participatingMSs are updated timely according to anticipated time drifts of their ownclocks. There are many well known methods for accomplishing NTP, somewhich require dedicated thread(s) for NTP processing, and some which usecertain data transmitted to and from a source to keep time in synch.

Those skilled in the art recognize that NTP accuracy depends onparticipating MS clocks and processing timing, as well as time serversource(s). Radio wave connected NTP time server(s) is typically accurateto as granular as 1 millisecond. Global Positioning System (GPS) timeservers provide accuracy as granular as 50 microseconds. GPS timingreceivers provide accuracy to around 100 nanoseconds, but this may bereduced by timing latencies in time server operating systems. Withadvancements in hardware, microcode, and software, obvious improvementsare being made to NTP. In NTP use embodiments of this disclosure, anappropriate synchronization of time is used for functionalinteroperability between MSs and other data processing systems usingNTP. NTP is not required in this disclosure, but it is an advantage whenin use.

LBX Directly Located Mobile Data Processing Systems (DLMs)

FIG. 1E depicts a network illustration for discussing variousdeployments of whereabouts processing aspects of the present disclosure.In some embodiments, a cellular network cluster 102 and cellular networkcluster 104 are parts of a larger cellular network. Cellular networkcluster 102 contains a controller 106 and a plurality of base stations,shown generally as base stations 108. Each base station covers a singlecell of the cellular network cluster, and each base station 108communicates through a wireless connection with the controller 106 forcall processing, as is well known in the art. Wireless devicescommunicate via the nearest base station (i.e. the cell the devicecurrently resides in), for example base station 108 b. Roamingfunctionality is provided when a wireless device roams from one cell toanother so that a session is properly maintained with proper signalstrength. Controller 106 acts like a telephony switch when a wirelessdevice roams across cells, and it communicates with controller 110 via awireless connection so that a wireless device can also roam to otherclusters over a larger geographical area. Controller 110 may beconnected to a controller 112 in a cellular cluster through a physicalconnection, for example, copper wire, optical fiber, or the like. Thisenables cellular clusters to be great distances from each other.Controller 112 may in fact be connected with a physical connection toits base stations, shown generally as base stations 114. Base stationsmay communicate directly with the controller 112, for example, basestation 114 e. Base stations may communicate indirectly to thecontroller 112, for example base station 114 a by way of base station114 d. It is well known in the art that many options exist for enablinginteroperating communications between controllers and base stations forthe purpose of managing a cellular network. A cellular network cluster116 may be located in a different country. Base controller 118 maycommunicate with controller 110 through a Public Service TelephoneNetwork (PSTN) by way of a telephony switch 120, PSTN 122, and telephonyswitch 124, respectively. Telephony switch 120 and telephony switch 124may be private or public. In one cellular network embodiment of thepresent disclosure, the services execute at controllers, for examplecontroller 110. In some embodiments, the MS includes processing thatexecutes at a wireless device, for example mobile laptop computer 126,wireless telephone 128, a personal digital assistant (PDA) 130, aniPhone 170, or the like. As the MS moves about, positional attributesare monitored for determining location. The MS may be handheld, orinstalled in a moving vehicle. Locating a wireless device using wirelesstechniques such as Time Difference of Arrival (TDOA) and Angle OfArrival (AOA) are well known in the art. The service may also execute ona server computer accessible to controllers, for example server computer132, provided an appropriate timely connection exists between cellularnetwork controller(s) and the server computer 132. Wireless devices(i.e. MSs) are preferably known by a unique identifier, for example aphone number, caller id, device identifier, or like appropriate uniquehandle.

In another embodiment of the present disclosure, GPS satellites such assatellite 134, satellite 136, and satellite 138 provide information, asis well known in the art, to GPS devices on earth for triangulationlocating of the GPS device. In this embodiment, a MS has integrated GPSfunctionality so that the MS monitors its positions. The MS ispreferably known by a unique identifier, for example a phone number,caller id, device identifier, or like appropriate unique handle.

In yet another embodiment of the present disclosure, a physicallyconnected device, for example, telephone 140, computer 142, PDA 144,telephone 146, and fax machine 148, may be newly physically connected toa network. Each is a MS, although the mobility is limited. Physicalconnections include copper wire, optical fiber, USB, or any otherphysical connection, by any communications protocol thereon. Devices arepreferably known by a unique identifier, for example a phone number,caller id, device identifier, physical or logical network address, orlike appropriate unique handle. The MS is detected for being newlylocated when physically connected. A service can be communicated to upondetecting connectivity. The service may execute at an Automatic ResponseUnit (ARU) 150, a telephony switch, for example telephony switch 120, aweb server 152 (for example, connected through a gateway 154), or a likedata processing system that communicates with the MS in any of a varietyof ways as well known to those skilled the art. MS detection may be aresult of the MS initiating a communication with the service directly orindirectly. Thus, a user may connect his laptop to a hotel network,initiate a communication with the service, and the service determinesthat the user is in a different location than the previouscommunication. A local area network (LAN) 156 may contain a variety ofconnected devices, each an MS that later becomes connected to a localarea network 158 at a different location, such as a PDA 160, a servercomputer 162, a printer 164, an internet protocol telephone 166, acomputer 168, or the like. Hard copy presentation could be made toprinter 164 and fax 148.

Current technology enables devices to communicate with each other, andother systems, through a variety of heterogeneous system andcommunication methods. Current technology allows executable processingto run on diverse devices and systems. Current technology allowscommunications between the devices and/or systems over a plethora ofmethodologies at close or long distance. Many technologies also existfor automatic locating of devices. It is well known how to have aninteroperating communications system that comprises a plurality ofindividual systems communicating with each other with one or moreprotocols. As is further known in the art of developing software,executable processing of the present disclosure may be developed to runon a particular target data processing system in a particular manner, orcustomized at install time to execute on a particular data processingsystem in a particular manner.

FIG. 2A depicts an illustration for describing automatic location of aMS, for example a DLM 200, through the MS coming into range of astationary cellular tower. A DLM 200, or any of a variety of MSs,travels within range of a cell tower, for example cell tower 108 b. Theknown cell tower location is used to automatically detect the locationof the DLM 200. In fact, any DLM that travels within the cell served bycell tower 108 b is identified as the location of cell tower 108 b. Theconfidence of a location of a DLM 200 is low when the cell coverage ofcell tower 108 b is large. In contrast, the confidence of a location ofa DLM 200 is higher when the cell coverage of cell tower 108 b issmaller. However, depending on the applications locating DLMs using thismethod, the locating can be quite acceptable. Location confidence isimproved with a TDOA measurement for the elapsed time of communicationbetween DLM 200 and cell tower to determine how close the MS is to thecell tower. Cell tower 108 b can process all locating by itself, or withinteroperability to other services as connected to cell tower 108 b inFIG. 1E. Cell tower 108 b can communicate the location of DLM 200 to aservice, to the DLM 200, to other MSs within its coverage area, anycombination thereof, or to any connected data processing system, or MS,of FIG. 1E.

FIG. 2B depicts an illustration for describing automatic location of aMS, for example a DLM 200, through the MS coming into range of somestationary antenna. DLM 200, or any of a variety of MSs, travels withinrange of a stationary antenna 202 that may be mounted to a stationaryobject 204. The known antenna location is used to automatically detectthe location of the DLM 200. In fact, any DLM that travels within thecoverage area served by antenna 202 is identified as the location ofantenna 202. The confidence of a location of a DLM 200 is low when theantenna coverage area of antenna 202 is large. In contrast, theconfidence of a location of a DLM 200 is higher when the antennacoverage area of antenna 202 is smaller. However, depending on theapplications locating DLMs using this method, the locating can be quiteacceptable. Location confidence is improved with a TDOA measurement forthe elapsed time of communication between DLM 200 and a particularantenna to determine how close the MS is to the antenna. Antenna 202 canprocess all locating by itself (with connected data processing system(not shown) as well known to those skilled in the art), or withinteroperability to other services as connected to antenna 202, forexample with connectivity described in FIG. 1E. Antenna 202 can be usedto communicate the location of DLM 200 to a service, to the DLM 200, toother MSs within its coverage area, any combination thereof, or to anyconnected data processing system, or MS, of FIG. 1E.

FIG. 2C depicts an illustration for discussing an example ofautomatically locating a MS, for example a DLM 200, through the MScoming into range of some stationary antenna. DLM 200, or any of avariety of MSs, travels within range of a stationary antenna 212 thatmay be mounted to a stationary object, such as building 210. The knownantenna location is used to automatically detect the location of the DLM200. In fact, any DLM that travels within the coverage area served byantenna 212 is identified as the location of antenna 212. The confidenceof a location of a DLM 200 is low when the antenna coverage area ofantenna 212 is large. In contrast, the confidence of a location of a DLM200 is higher when the antenna coverage area of antenna 212 is smaller.However, depending on the applications locating DLMs using this method,the locating can be quite acceptable. Location confidence is improvedwith a TDOA measurement as described above. Antenna 212 can process alllocating by itself (with connected data processing system (not shown) aswell known to those skilled in the art), or with interoperability toother services as connected to antenna 212, for example withconnectivity described in FIG. 1E. Antenna 212 can be used tocommunicate the location of DLM 200 to a service, to the DLM 200, toother MSs within its coverage area, any combination thereof, or to anyconnected data processing system, or MS, of FIG. 1E.

Once DLM 200 is within the building 210, a strategically placed antenna216 with a desired detection range within the building is used to detectthe DLM 200 coming into its proximity. Wall breakout 214 is used to seethe antenna 216 through the building 210. The known antenna 216 locationis used to automatically detect the location of the DLM 200. In fact,any DLM that travels within the coverage area served by antenna 216 isidentified as the location of antenna 216. The confidence of a locationof a DLM 200 is low when the antenna coverage area of antenna 216 islarge. In contrast, the confidence of a location of a DLM 200 is higherwhen the antenna coverage area of antenna 216 is smaller. Travels of DLM200 can be limited by objects, pathways, or other limiting circumstancesof traffic, to provide a higher confidence of location of DLM 200 whenlocated by antenna 216, or when located by any locating antennadescribed herein which detects MSs coming within range of its location.Location confidence is improved with a TDOA measurement as describedabove. Antenna 216 can process all locating by itself (with connecteddata processing system (not shown) as well known to those skilled in theart), or with interoperability to other services as connected to antenna216, for example with connectivity described in FIG. 1E. Antenna 216 canbe used to communicate the location of DLM 200 to a service, to the DLM200, to other MSs within its coverage area, any combination thereof, orto any connected data processing system, or MS, of FIG. 1E. Otherin-range detection antennas of a FIG. 2C embodiment may be strategicallyplaced to facilitate warehouse operations such as in Kubler et al.

FIG. 2D depicts a flowchart for describing a preferred embodiment of aservice whereabouts update event of an antenna in-range detected MS, forexample a DLM 200, when MS location awareness is monitored by astationary antenna, or cell tower (i.e. the service thereof). FIGS. 2Athrough 2C location detection processing are well known in the art. FIG.2D describes relevant processing for informing MSs of their ownwhereabouts. Processing begins at block 230 when a MS signal deserving aresponse has been received and continues to block 232 where the antennaor cell tower service has authenticated the MS signal. A MS signal canbe received for processing by blocks 230 through 242 as the result of acontinuous, or pulsed, broadcast or beaconing by the MS (FIG. 13A),perhaps as part of usual communication protocol in progress for the MS(FIG. 13A usual data 1302 with embedded Communications Key (CK) 1304),or an MS response to continuous, or pulsed, broadcast or beaconing viathe service connected antenna (FIG. 13C). MS and/or service transmissioncan be appropriately correlated for a response (as described above)which additionally facilitates embodiments using TDOA measurements (timeof communications between the MS and antenna, or cell tower) todetermine at least how close is the MS in range (or use in conjunctionwith other data to triangulate the MS location). The MS is preferablyauthenticated by a unique MS identifier such as a phone number, address,name, serial number, or any other unique handle to the MS. In this, andany other embodiments disclosed, an MS may be authenticated using agroup identifier handle indicating membership to a supported/known groupdeserving further processing. Authentication will preferably consult adatabase for authenticating that the MS is known. Block 232 continues toblock 234 where the signal received is immediately responded back to theMS, via the antenna, containing at least correlation along withwhereabouts information for a Whereabouts Data Record (WDR) 1100associated with the antenna (or cell tower). Thereafter, the MS receivesthe correlated response containing new data at block 236 and completes alocal whereabouts data record 1100 (i.e. WDR 1100) using data receivedalong with other data determined by the MS.

In another embodiment, blocks 232 through 234 are not required. Aservice connected antenna (or cell tower) periodically broadcasts itswhereabouts (WDR info (e.g. FIG. 13C)) and MSs in the vicinity use thatdirectly at block 236. The MS can choose to use only the confidence andlocation provided, or may determine a TDOA measurement for determininghow close it is. If the date/time stamp field 1100 b indicates NTP is inuse by the service, and the MS is also using NTP, then a TDOAmeasurement can be determined using the one unidirectional broadcast viathe antenna by using the date/time stamp field 1100 b received with whenthe WDR information was received by the MS (subtract time difference anduse known wave spectrum for distance). If either the service or MS isnot NTP enabled, then a bidirectional correlated data flow between theservice and MS is used to assess a TDOA measurement in terms of time ofthe MS. One embodiment provides the TDOA measurement from the service tothe MS. Another embodiment calculates the TDOA measurement at the MS.

Network Time protocol (NTP) can ensure MSs have the same atomic clocktime as the data processing systems driving antennas (or cell towers)they will encounter. Then, date/time stamps can be used in a singledirection (unidirectional) broadcast packet to determine how long ittook to arrive to/from the MS. In an NTP embodiment, the MS (FIG. 13A)and/or the antenna (FIG. 13C) sends a date/time stamp in the pulse,beacon, or protocol. Upon receipt, the antenna (or cell tower) servicedata processing system communicates how long the packet took from an MSto the antenna (or cell tower) by comparing the date/time stamp in thepacket and a date/time stamp of when it was received. The service mayalso set the confidence value, before sending WDR information to the MS.Similarly, an MS can compare a date/time stamp in the unidirectionalbroadcast packet sent from a locating service (FIG. 13C) with whenreceived by the MS. So, NTP facilitates TDOA measurements in a singlebroadcast communication between systems through incorporation to usualcommunications data 1302 with a date/time stamp in Communications Key(CK) 1304, or alternatively in new data 1302. Similarly, NTP facilitatesTDOA measurement in a single broadcast communication between systemsthrough incorporation to usual communications data 1312 with a date/timestamp in Communications Key (CK) 1314, or alternatively in new data1312.

The following template is used in this disclosure to highlight fieldsettings. See FIG. 11A descriptions. Fields are set to the followingupon exit from block 236:

MS ID field 1100 a is preferably set with: Unique MS identifier of theMS invoking block 240. This field is used to uniquely distinguish thisMS WDRs on queue 22 from other originated WDRs.DATE/TIME STAMP field 1100 b is preferably set with: Date/time stamp forWDR completion at block 236 to the finest granulation of time achievableby the MS. The NTP use indicator is set appropriately.LOCATION field 1100 c is preferably set with: Location of stationaryantenna (or cell tower) as communicated by the service to the MS.CONFIDENCE field 1100 d is preferably set with: The same value (e.g. 76)for any range within the antenna (or cell tower), or may be adjustedusing the TDOA measurement (e.g. amount of time detected by the MS forthe response at block 234). The longer time it takes between the MSsending a signal detected at block 232 and the response with data backreceived by the MS (block 234), the less confidence there is for beinglocated because the MS must be a larger distance from the antenna orcell tower. The less time it takes between the MS sending a signaldetected at block 232 and the response with data back, the moreconfidence there is for being located because the MS must be a closerdistance to the antenna or cell tower. Confidence values arestandardized for all location technologies. In some embodiments of FIG.2D processing, a confidence value can be set for 1 through 100 (1 beinglowest confidence and 100 being highest confidence) wherein a unit ofmeasurement between the MS and antenna (or cell tower) is used directlyfor the confidence value. For example, 20 meters is used as the unit ofmeasurement. For each unit of 20 meters distance determined by the TDOAmeasurement, assign a value of 1, up to a worst case of 100 (i.e. 2000meters). Round the 20 meter unit of distance such that 0 meters to <25meters is 20 meters (i.e. 1 unit of measurement), 26 meters to <45meters is 40 meters (i.e. 2 units of measurement), and so on. Once thenumber of units is determined, subtract that number from 101 for theconfidence value (i.e. 1 unit=confidence value 100, 20 units=confidencevalue 81; 100 units or greater=confidence value of 1). Yet anotherembodiment will use a standard confidence value for this “coming inrange” technology such as 76 and then further increase or decrease theconfidence using the TDOA measurement. Many embodiments exist forquantifying a higher versus lower confidence. In any case, a confidencevalue (e.g. 76) is determined by the MS, service, or both (e.g. MS usesTDOA measurement to modify confidence sent by service).LOCATION TECHNOLOGY field 1100 e is preferably set with: “Server AntennaRange” for an antenna detecting the MS, and is set to “Server CellRange” for a cell tower detecting the MS. The originator indicator isset to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: The periodof time for communications between the antenna and the MS (a TDOAmeasurement), if known; a communications signal strength, if available;wave spectrum used (e.g. from MS receive processing), if available;particular communications interface 70, if available. The TDOAmeasurement may be converted to a distance using wave spectruminformation. The values populated here should have already been factoredinto the confidence value at block 236.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with:Parameters uniquely identifying a/the service (e.g. antenna (or celltower)) and how to best communicate with it again, if available. May notbe set, regardless if received from the service.SPEED field 1100 h is preferably set with: Data received by MS at block234, if available.HEADING field 1100 i is preferably set with: Data received by MS atblock 234, if available.ELEVATION field 1100 j is preferably set with: data received by MS atblock 234, if available. Elevation field 1100 j is preferably associatedwith the antenna (or cell tower) by the elevation/altitude of theantenna (or cell tower).APPLICATION FIELDS field 1100 k is preferably set with: Data received atblock 234 by the MS, or set by data available to the MS, or set by boththe locating service for the antenna (or cell tower) and the MS itself.Application fields include, and are not limited to, MS navigation APIsin use, social web site identifying information, application informationfor applications used, accessed, or in use by the MS, or any otherinformation complementing whereabouts of the MS.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

A service connected to the antenna (or cell tower) preferably useshistorical information and artificial intelligence interrogation of MStravels to determine fields 1100 h and 1100 i. Block 236 continues toblock 238 where parameters are prepared for passing to FIG. 2Fprocessing invoked at block 240. Parameters are set for: WDRREF=areference or pointer to the WDR; DELETEQ=FIG. 2D location queue discardprocessing; and SUPER=FIG. 2D supervisory notification processing.Thereafter, block 240 invokes FIG. 2F processing and FIG. 2D processingterminates at block 242. FIG. 2F processing will insert to queue 22 sothis MS knows at least its own whereabouts whenever possible. A singledata instance embodiment of WDR queue 22 will cause FIG. 2F to updatethe single record of WDR information for being current upon exit fromblock 240 (this is true for all flowchart blocks invoking FIG. 2Fprocessing).

With reference now to FIG. 2F, depicted is a flowchart for describing apreferred embodiment of a procedure for inserting a Whereabouts DataRecord (WDR) 1100 to MS WDR queue 22. Appropriate semaphores are usedfor variables which can be accessed simultaneously by another threadother than the caller. With reference now to FIG. 2F, procedureprocessing starts at block 270 and continues to block 272 whereparameters passed from the invoking block of processing, for exampleblock 240, are determined. The variable WDRREF is set by the caller to areference or pointer to the WDR so subsequent blocks of FIG. 2F canaccess the WDR. The variable DELETEQ is set by the caller so that block292 knows how to discard obsolete location queue entries. The DELETEQvariable can be a multi-field record (or reference thereof) for how toprune. The variable SUPER is set by the caller so that block 294 knowsunder what condition(s), and which data, to contact a supervisoryservice. The SUPER variable can be a multi-field record (or referencethereof) for instruction.

Block 272 continues to block 274 where the DLMV (see FIG. 12 and laterdiscussions for DLMV (DLM role(s) List Variable)), or ILMV (see FIG. 12and later discussions for ILMV (ILM role(s) List Variable)), is checkedfor an enabled role matching the WDR for insertion (e.g. DLM: locationtechnology field 1100 e (technology and originator indicator) when MSID=this MS; ILM: DLM or ILM indicator when MS ID not this MS). If nocorresponding DLMV/ILMV role is enabled for the WDR to insert, thenprocessing continues to block 294 (the WDR is not inserted to queue 22).If the ILMV/DLMV role for the WDR is enabled, then processing continuesto block 276 where the confidence of the WDR 1100 is validated prior toinsertion. An alternate embodiment to FIG. 2F will not have block 274(i.e. block 272 continues directly to block 276) since appropriate DLMand/or ILM processing may be terminated anyway when DLM/mM role(s) aredisabled (see FIG. 14A/B).

If block 276 determines the data to be inserted is not of acceptableconfidence (e.g. field 1100 d<confidence floor value (see FIG. 14A/B)),then processing continues to block 294 described below. If block 276determines the data to be inserted is of acceptable confidence (e.g.field 1100 d>70), then processing continues to block 278 for checkingthe intent of the WDR insertion.

If block 278 determines the WDR for insert is a WDR describingwhereabouts for this MS (i.e. MS ID matching MS of FIG. 2F processing(DLM: FIGS. 2A through 9B, or ILM: FIG. 26A/B)), then processingcontinues to block 280. If block 278 determines the WDR for insert isfrom a remote ILM or DLM (i.e. MS ID does not match MS of FIG. 2Fprocessing), then processing continues to block 290. Block 280 peeks theWDR queue 22 for the most recent highest confidence entry for this MSwhereabouts by searching queue 22 for: the MS ID field 1100 a matchingthe MS ID of FIG. 2F processing, and a confidence field 1100 d greaterthan or equal to the confidence floor value, and a most recent date/timestamp field 1100 b. Thereafter, if block 282 determines one was found,then processing continues to block 284, otherwise processing continuesto block 286 where a Last Whereabouts date/Time stamp (LWT) variable isset to field 1100 b of the WDR for insert (e.g. first MS whereaboutsWDR), and processing continues to block 288.

If block 284 determines the WDR for insertion has significantly moved(i.e. using a movement tolerance configuration (e.g. 3 meters) withfields 1100 c of the WDR for insert and the WDR peeked at block 280),then block 286 sets the LWT (Last Whereabouts date/Time stamp) variable(with appropriate semaphore) to field 1100 b of the WDR for insert, andprocessing continues to block 288, otherwise processing continuesdirectly to block 288 (thereby keeping the LWT as its last setting). TheLWT is to hold the most recent date/time stamp of when the MSsignificantly moved as defined by a movement tolerance. The movementtolerance can be system defined or configured, or user configured inFIG. 14 by an option for configuration detected at block 1408, and thenusing the Configure Value procedure of FIG. 18 (like confidence floorvalue configuration).

Block 288 accesses the DLMV and updates it with a new DLM role if thereis not one present for it. This ensures a correct list of DLMV roles areavailable for configuration by FIG. 14. Preferably, by default anunanticipated DLMV role is enabled (helps inform the user of itsavailability). Likewise in another embodiment, ILMV roles can besimilarly updated, in particular if a more granulated list embodiment ismaintained to the ILMV, or if unanticipated results help to identifyanother configurable role. By default, block 274 should allowunanticipated roles to continue with WDR insertion processing, and thenblock 288 can add the role, enable it, and a user can decide what to dowith it in configuration (FIG. 14A/B).

Thereafter, the WDR 1100 is inserted to the WDR queue 22 at block 290,block 292 discards any obsolete records from the queue as directed bythe caller (invoker), and processing continues to block 294. The WDRqueue 22 preferably contains a list of historically MS maintainedWhereabouts Data Records (WDRs) as the MS travels. When the MS needs itsown location, for example from an application access, or to help locatean ILM, the queue is accessed for returning the WDR with the highestconfidence value (field 1100 d) in the most recent time (field 1100 b)for the MS (field 1100 a). Block 292 preferably discards by using fields1100 b and 1100 d relative to other WDRs. The queue should not beallowed to get too large. This will affect memory (or storage)utilization at the MS as well as timeliness in accessing a sought queueentry. Block 292 also preferably discards WDRs from queue 22 by movingselected WDRs to LBX History 30.

As described above, queue interfaces assume an implicit semaphore forproperly accessing queue 22. There may be ILMs requesting to be located,or local applications of the MS may request to access the MSwhereabouts. Executable thread(s) at the MS can accesses the queue in athread-safe manner for responding to those requests. The MS may alsohave multiple threads of processing for managing whereabouts informationfrom DLMs, ILMs, or stationary location services. The more concurrentlyexecutable threads available to the MS, the better the MS is able tolocate itself and respond to others (e.g. MSs). There can be manylocation systems and methods used to keeping a MS informed of its ownwhereabouts during travel. While the preferred embodiment is to maximizethread availability, the obvious minimum requirement is to have at least1 executable thread available to the MS. As described above, inoperating system environments without proper queue interfaces, queueaccess blocks are first preceded by an explicit request for a semaphorelock to access queue 22 (waits until obtained), and then followed by ablock for releasing the semaphore lock to another thread for use. Also,in the present disclosure it is assumed in blocks which access dataaccessible to more than 1 concurrent thread (e.g. shared memory accessto DLMV or ILMV at block 274) that an appropriate semaphore (created atblock 1220) protect synchronous access.

If block 294 determines information (e.g. whereabouts) should becommunicated by service informant code 28 to a supervisory service, forexample a service 1050, then block 296 communicates specified data tothe service and processing terminates at block 298 by returning to theinvoker (caller). If block 294 determines a supervisory service is notto be informed, then processing terminates with an appropriate return tothe caller at block 298. Service informant code 28, at block 296, cansend information as data that is reliably acknowledged on receipt, or asa datagram which most likely (but unreliably) is received.

Depending on the SUPER variable, block 294 may opt to communicate everytime a WDR is placed to the queue, or when a reasonable amount of timehas passed since last communicating to the supervisory service, or whena WDR confidence reaches a certain sought value, or when any WDR fieldor fields contain certain sought information, or when a reasonably largenumber of entries exist in WDR queue 22, or for any processing conditionencountered by blocks 270 through 298, or for any processing conditionencountered by caller processing up to the invocation of FIG. 2Fprocessing. Different embodiments will send a single WDR 1100 at block296, a plurality of WDRs 1100, or any other data. Various SUPERparameter(s) embodiments for FIG. 2F caller parameters can indicatewhat, when, where and how to send certain data. Block 296 may send anemail, an SMS message, or use other means for conveying data. Serviceinformant code 28 may send LBX history 30, statistics 14 and/or anyother data 8, data 20, queue data, data 36 or resources 38. Serviceinformant code 28 may update data in history 30, statistics 14 or anyother data 8, data 20, queue data, data 36 and/or resources 38, possiblyusing conditions of this data to determine what is updated. Blocks 294and 296 may be omitted in some embodiments.

If a single WDR is sent at block 296 as passed to FIG. 2F processing,then the WDR parameter determined at block 272 is accessed. If aplurality of WDRs is sent at block 296, then block 296 appropriatelyinterfaces in a thread-safe manner to queue 22, and sends the WDRs.

Some preferred embodiments do not incorporate blocks 278 through 286.(i.e. block 276 continues to block 288 if confidence ok). Blocks 278through 286 are for the purpose of implementing maintaining a date/timestamp of last MS significant movement (using a movement tolerance).Architecture 1900 uses FIG. 2F, as does DLM processing. FIG. 2F mustperform well for the preferred multithreaded architecture 1900. Block280 performs a peek, and block 284 can be quite timely depending onembodiments used for location field 1100 c. A movement toleranceincorporated at the MS is not necessary, but may be nice to have.Therefore, blocks 278 through 286 are optional blocks of processing.

FIG. 2F may also maintain (with appropriate semaphore) the most recentWDR describing whereabouts of the MS of FIG. 2F processing to a singledata record every time a new one is to be inserted. This allowsapplications needing current whereabouts to simply access a current WDR,rather than interface to a plurality of WDRs at queue 22. For example,there could be a new block 289 for updating the single WDR 1100 (justprior to block 290 such that incoming blocks to block 290 go to newblock 289, and new block 289 continues to block 290).

With reference now to FIG. 2E, depicted is a flowchart for describing apreferred embodiment of an MS whereabouts update event of an antennain-range detected MS, for example a DLM 200, when MS location awarenessis monitored by the MS. FIG. 2E describes relevant processing for MSs tomaintain their own whereabouts. Processing begins at block 250 when theMS receives a signal from an antenna (or cell tower) deserving aresponse and continues to block 252 where the antenna or cell towersignal is authenticated by the MS as being a legitimate signal forprocessing. The signal can be received for processing by blocks 250through 264 as the result of a continuous, or pulsed, broadcast orbeaconing by the antenna, or cell tower (FIG. 13C), or as part of usualcommunication protocol in progress with at least one MS (FIG. 13C usualdata 1312 with embedded Communications Key 1314), or as a response viaantenna to a previous MS signal (FIG. 13A). The signal is preferablyauthenticated by a data parsed signature deserving further processing.Block 252 continues to block 254 where the MS sends an outbound requestfor soliciting an immediate response from the antenna (or cell tower)service. The request by the MS is appropriately correlated (e.g. asdescribed above) for a response, which additionally facilitatesembodiments using TDOA measurements (time of communications between theMS and antenna, or cell tower) to determine how close is the MS inrange. Block 254 waits for a response, or waits until a reasonabletimeout, whichever occurs first. There are also multithreadedembodiments to breaking up FIG. 2E where block 254 does not wait, butrather terminates FIG. 2E processing and depends on another thread tocorrelate the response and then continue processing blocks 256 through260 (like architecture 1900).

Thereafter, if block 256 determines the request timed out, thenprocessing terminates at block 264. If block 256 determines the responsewas received, then processing continues to block 258. Block 258completes a WDR 1100 with appropriate response data received along withdata set by the MS. See FIG. 11A descriptions. Fields are set to thefollowing upon exit from block 258:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: Same as was described forFIG. 2D (block 236) above.CONFIDENCE field 1100 d is preferably set with: Same as was describedfor FIG. 2D (block 236) above.LOCATION TECHNOLOGY field 1100 e is preferably set with: “Client AntennaRange” for an antenna detecting the MS, and is set to “Client CellRange” for a cell tower detecting the MS. The originator indicator isset to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: Same as was described forFIG. 2D (block 236) above.HEADING field 1100 i is preferably set with: Same as was described forFIG. 2D (block 236) above.ELEVATION field 1100 j is preferably set with: Same as was described forFIG. 2D (block 236) above.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

The longer time it takes between sending a request and getting aresponse at block 254, the less confidence there is for being locatedbecause the MS must be a larger distance from the antenna or cell tower.The less time it takes, the more confidence there is for being locatedbecause the MS must be a closer distance to the antenna or cell tower.Confidence values are analogously determined as described for FIG. 2D.FIG. 2D NTP embodiments also apply here. NTP can be used so nobidirectional communications is required for TDOA measurement. In thisembodiment, the antenna (or cell tower) sets a NTP date/time stamp inthe pulse, beacon, or protocol. Upon receipt, the MS instantly knows howlong the packet took to be received by comparing the NTP date/time stampin the packet and a MS NTP date/time stamp of when it was received (i.e.no request/response pair required). If location information is alsopresent with the NTP date/time stamp in data received at block 252, thenblock 252 can continue directly to block 258.

An alternate MS embodiment determines its own (direction) heading and/orspeed for WDR completion based on historical records maintained to theWDR queue 22 and/or LBX history 30.

Block 258 continues to block 260 for preparing parameters for: WDRREF=areference or pointer to the WDR; DELETEQ=FIG. 2E location queue discardprocessing; and SUPER=FIG. 2E supervisory notification processing.Thereafter, block 262 invokes the procedure (FIG. 2F processing) toinsert the WDR to queue 22. After FIG. 2F processing of block 262, FIG.2E processing terminates at block 264.

In alternative “coming within range” (same as “in range”, “in-range”,“within range”) embodiments, a unique MS identifier, or MS groupidentifier, for authenticating an MS for locating the MS is notnecessary. An antenna emitting signals (FIG. 13C) will broadcast (in CK1314 of data 1312) not only its own location information (e.g. locationfield 1100 c), but also an NTP indicated date/time stamp field 1100 b,which the receiving MS (also having NTP for time synchronization) usesto perform a TDOA measurement upon receipt. This will enable a MS todetermine at least how close (e.g. radius 1318 range, radius 1320 range,radius 1322 range, or radius 1316 range) it is located to the locationof the antenna by listening for and receiving the broadcast (e.g. ofFIG. 13C). Similarly, in another embodiment, an NTP synchronized MSemits signals (FIG. 13A) and an NTP synchronized data processing systemassociated with a receiving antenna can make a TDOA measurement uponsignal receipt. In other embodiments, more than a single unidirectionalsignal may be used while still preventing the requirement to recognizethe MS to locate it. For example, an antenna emitting signals (e.g. FIG.13C hotspot WiFi 802.x) will contain enough information for a MS torespond with correlation for being located, and visa-versa. In any case,there can be multi-directional exchanged signals for determining a TDOAmeasurement.

FIG. 3A depicts a locating by triangulation illustration for discussingautomatic location of a MS, for example DLM 200. DLM 200 is locatedthrough triangulation, as is well known in the art. At least three basetowers, for example, base tower 108 b, base tower 108 d, and base tower108 f, are used for locating the MS. A fourth base tower may be used ifelevation (or altitude) was configured for use in locating DLM 200.There are cases where only two base towers are necessary given routes oftravel are limited and known, for example, in spread out roadways orlimited configured locations. Base towers may also be antennas 108 b,108 d, and 108 f in similar triangulation embodiments.

FIG. 3B depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a triangulated MS, for example DLM 200, whenMS location awareness is monitored by some remote service. While FIG. 3Alocation determination with TDOA and AOA is well known in the art, FIGS.3B and 3C include relevant processing for MSs to maintain their ownwhereabouts. Processing begins at block 310 and continues to block 312where base stations able to communicate to any degree with a MS continuereporting to their controller the MS signal strength with an MSidentifier (i.e. a unique handle) and Time Difference of Arrival (TDOA)information, Angle of Arrival (AOA) information, or heterogeneously bothTDOA and AOA (i.e. MPT), depending on the embodiment. The MS can picksignals from base stations. In some embodiments, the MS monitors apaging channel, called a forward channel. There can be multiple forwardchannels. A forward channel is the transmission frequency from the basetower to the MS. Either the MS provides broadcast heartbeats (FIG. 13A)for base stations, or the base stations provide heartbeats (FIG. 13C)for a response from the MS, or usual MS use protocol signals aredetected and used (incorporating CK 1304 in usual data 1302 by MS, or CK1314 in “usual data” 1312 by service). Usual data is the usualcommunications traffic data in carrying out other character 32processing. Communication from the MS to the base tower is on what iscalled the reverse channel. Forward channels and reverse channel areused to perform call setup for a created session channel.

TDOA is calculated from the time it takes for a communication to occurfrom the MS back to the MS via the base tower, or alternatively, from abase tower back to that base tower via the MS. NTP may also be used fortime calculations in a unidirectional broadcast from a base tower (FIG.13C) to the MS, or from the MS (FIG. 13A) to a base tower (as describedabove). AOA is performed through calculations of the angle by which asignal from the MS encounters the antenna. Triangle geometry is thenused to calculate a location. The AOA antenna is typically of a phasedarray type.

See “Missing Part Triangulation (MPT)” section below with discussionsfor FIGS. 11A through 11E for details on heterogeneously locating the MSusing both TDOA and AOA (i.e. Missing Part Triangulation (MPT)). Just ashigh school taught geometry for solving missing parts of a triangle, soto does MPT triangulate an MS location. Think of the length of a side ofa triangle as a TDOA measurement—i.e. length of time, translatable to adistance. Think of the AOA of a signal to an antenna as one of theangles of a triangle vertice. Solving with MPT analogously usesgeometric and trigonometric formulas to solve the triangulation, albeitat fast processing speeds.

Thereafter, if the MS is determined to be legitimate and deserving ofprocessing (similar to above), then block 314 continues to block 316. Ifblock 314 determines the MS is not participating with the service, inwhich case block 312 did little to process it, then processing continuesback to block 312 to continue working on behalf of legitimateparticipating MSs. The controller at block 316 may communicate withother controllers when base stations in other cellular clusters arepicking up a signal, for example, when the MS roams. In any case, atblock 316, the controller(s) determines the strongest signal basestations needed for locating the MS, at block 316. The strongest signalsthat can accomplish whereabouts information of the MS are used.Thereafter, block 318 accesses base station location information forbase stations determined at block 316. The base station providesstationary references used to (relatively) determine the location of theMS. Then, block 320 uses the TDOA, or AOA, or MPT (i.e. heterogeneouslyboth AOA and TDOA) information together with known base stationlocations to calculate the MS location.

Thereafter, block 322 accesses historical MS location information, andblock 324 performs housekeeping by pruning location history data for theMS by time, number of entries, or other criteria. Block 326 thendetermines a heading (direction) of the MS based on previous locationinformation. Block 326 may perform Artificial Intelligence (AI) todetermine where the MS may be going by consulting many or all of thelocation history data. Thereafter, block 328 completes a service sideWDR 1100, block 330 appends the WDR information to location history dataand notifies a supervisory service if there is one outside of theservice processing of FIG. 3B. Processing continues to block 332 wherethe service communicates the WDR to the located MS.

Thereafter, the MS completes its own WDR at block 334 for adding to WDRqueue 22 to know its own whereabouts whenever possible, and block 336prepares parameters for invoking WDR insertion processing at block 338.Parameters are set for: WDRREF=a reference or pointer to the MS WDR;DELETEQ=FIG. 3B location queue discard processing; and SUPER=FIG. 3Bsupervisory notification processing (e.g. no supervisory notificationprocessing because it was already handled at block 330, or by being incontext of the FIG. 3B service processing). At block 338, the MS invokesFIG. 2F processing already described. After block 338, processingcontinues back to block 312. Of course, block 332 continues directly toblock 312 at the service(s) since there is no need to wait for MS(s)processing in blocks 334 through 338. FIG. 3B processing is continuousfor every MS in the wireless network 7 days a week, 24 hours a day.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 334:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The triangulated locationof the MS as communicated by the service.CONFIDENCE field 1100 d is preferably set with: Confidence oftriangulation determined by the service which is passed to the MS atblock 332. The confidence value may be set with the same value (e.g. 85)regardless of how the MS was triangulated. In other embodiments, field1100 d will be determined (completely, or adjusting the value of 85) bythe service for TDOA measurements used, AOA measurements, signalstrengths, wave spectrum involved, and/or the abundance of particular MSsignals available for processing by blocks 312 through 320. Higherconfidences are assigned for smaller TDOA measurements (shorterdistances), strong signal strengths, and numerous additional data pointsbeyond what is necessary to locate the MS. Lower confidences areassigned for larger TDOA measurements, weak signal strengths, andminimal data points necessary to locate the MS. A reasonable confidencecan be assigned using this information as guidelines where 1 is thelowest confidence and 100 is the highest confidence.LOCATION TECHNOLOGY field 1100 e is preferably set with: “Server CellTDOA”, “Server Cell AOA”, “Server Cell MPT”, “Server Antenna TDOA”,“Server Antenna AOA”, or “Server Antenna MPT”, depending on how the MSwas located and what flavor of service was used. The originatorindicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset) for indicating that all triangulation data was factored intodetermining confidence, and none is relevant for a single TDOA or AOAmeasurement in subsequent processing (i.e. service did all the work).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: Service WDR information atblock 332, wherein the service used historical information andartificial intelligence interrogation of MS travels to determine, ifavailable.HEADING field 1100 i is preferably set with: Service WDR information atblock 332, wherein the service used historical information andartificial intelligence interrogation of MS travels to determine, ifavailable.ELEVATION field 1100 j is preferably set with: Elevation/altitude, ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIG. 3C depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a triangulated MS, for example a DLM 200,when MS location awareness is monitored by the MS. Communicationsbetween the base stations and MS is similar to FIG. 3B processing exceptthe MS receives information (FIG. 13C) for performing calculations andrelated processing. Processing begins at block 350 and continues toblock 352 where the MS continues receiving (FIG. 13C) pulse reportingfrom base stations (or antennas). AOA, TDOA, and MPT (See “Missing PartTriangulation (MPT)” section below with discussions for FIGS. 11Athrough 11E for details on heterogeneously locating the MS using bothTDOA and AOA) can be used to locate the MS, so there are many possiblesignal types received at block 352. Then, block 354 determines thestrongest signals which can accomplish a completed WDR, or at least alocation, of the MS. Thereafter, block 356 parses base station locationinformation from the pulse messages that are received by the MS. Block358 communicates with base stations to perform TDOA and/or AOAmeasurements and calculations. The time it takes for a communication tooccur from the MS back to the MS for TDOA, or alternatively, from a basetower back to that base tower can be used. NTP may also be used, asdescribed above, so that base towers (or antennas) broadcast signals(FIG. 13C) picked up by the MS which already contain the base towerlocations and NTP date/time stamps for TDOA calculations. Block 358 usesthe TDOA and/or AOA information with the known base station informationto determine the MS location. While AOA information from the basestations (or antennas) is used by the MS, various MS embodiments can useAOA information detected at an MS antenna provided the heading, yaw,pitch, and roll is known at the MS during the same time as signalreception by the MS. A 3-axis accelerometer (e.g. in iPhone) may alsoprovide yaw, pitch and roll means for proper AOA calculation.

Thereafter, block 360 accesses historical MS location information (e.g.WDR queue 22 and/or LBX history 30) to prevent redundant informationkept at the MS, and block 362 performs housekeeping by pruning the LBXhistory 30 for the MS by time, number of entries, or other criteria.Block 364 then determines a heading (direction) of the MS based onprevious location information (unless already known from block 358 forAOA determination). Block 364 may perform Artificial Intelligence (AI)to determine where the MS may be going by consulting queue 22 and/orhistory 30. Thereafter, block 366 completes a WDR 1100, and block 368prepares parameters for FIG. 2F processing: WDRREF=a reference orpointer to the MS WDR; DELETEQ=FIG. 3C location queue discardprocessing; and SUPER=FIG. 3B supervisory notification processing. Block368 continues to block 370 for invoking FIG. 2F processing alreadydescribed above. After block 370, processing continues back to block352. FIG. 3C processing is continuous for the MS as long as the MS isenabled. In various multithreaded embodiments, many threads at the MSwork together for high speed processing at blocks 352 through 358 forconcurrently communicating to many stationary references.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 366:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The triangulated locationof the MS as determined by the MS.CONFIDENCE field 1100 d is preferably set with: The confidence oftriangulation as determined by the MS. Confidence may be set with thesame value (e.g. 80 since MS may be moving during triangulation)regardless of how the MS was triangulated. In other embodiments, field1100 d will be determined (completely, or adjusting the value of 80) bythe MS for TDOA measurements used, AOA measurements, signal strengths,wave spectrum involved, and/or the abundance of particular servicesignals available for processing. Higher confidences are assigned forsmaller TDOA measurements (shorter distances), strong signal strengths,and numerous additional data points beyond what is necessary to locatethe MS. Lower confidences are assigned for larger TDOA measurements,weak signal strengths, and minimal data points necessary to locate theMS. A reasonable confidence can be assigned using this information asguidelines where 1 is the lowest confidence and 100 is the highestconfidence.LOCATION TECHNOLOGY field 1100 e is preferably set with: “Client CellTDOA”, “Client Cell AOA”, “Client Cell MPT”, “Client Antenna TDOA”,“Client Antenna AOA”, or “Client Antenna MPT”, depending on how the MSlocated itself. The originator indicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: Dataassociated with selected best stationary reference(s) used by the MS:the selection location/whereabouts, TDOA measurement to it, and wavespectrum (and/or particular communications interface 70) used, ifreasonable. The TDOA measurement may be converted to a distance usingwave spectrum information. Also, preferably set herein is dataassociated with a selected best stationary reference used by the MS (maybe same or different than for TDOA measurement): the selection location,AOA measurement to it, and heading, yaw, pitch, and roll values (oraccelerometer readings), if reasonable. Values that may be populatedhere should have already been factored into the confidence value. Theremay be one or more stationary reference whereabouts with usefulmeasurements maintained here for FIG. 26B processing of block 2652.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with:Parameters referencing MS internals, if desired.SPEED field 1100 h is preferably set with: Speed determined by the MSusing historical information (queue 22 and/or history 30) and artificialintelligence interrogation of MS travels to determine, if reasonable.HEADING field 1100 i is preferably set with: Heading determined by theMS using historical information (queue 22 and/or history 30) andartificial intelligence interrogation of MS travels to determine, ifreasonable.ELEVATION field 1100 j is preferably set with: Elevation/altitude, ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

In alternative triangulation embodiments, a unique MS identifier, or MSgroup identifier, for authenticating an MS for locating the MS is notnecessary. An antenna emitting signals (FIG. 13C) will broadcast (CK1314 of data 1312) not only its own location information, but also anNTP date/time stamp, which the receiving MS (also having NTP for timesynchronization) uses to perform TDOA measurements upon receipt. Thiswill enable a MS to determine how close (e.g. radius 1318 range, radius1320 range, radius 1322 range, or radius 1316 range) it is located tothe location of the antenna by listening for and receiving the broadcast(e.g. of FIG. 13C). Similarly, in another embodiment, an NTPsynchronized MS emits signals (FIG. 13A) and an NTP synchronized dataprocessing system associated with a receiving antenna can determine aTDOA measurement upon signal receipt. In other embodiments, more than asingle unidirectional signal may be used while still preventing therequirement to recognize the MS to locate it. For example, an antennaemitting signals will contain enough information for a MS to respondwith correlation for being located. Alternatively, an MS emittingsignals will contain enough information for a service to respond withcorrelation for being located. In any case, there can bemulti-directional exchanged signals for determining TDOA. Similarly, aservice side data processing system can interact with a MS for AOAinformation without requiring a known identifier of the MS (userequest/response correlation).

FIG. 4A depicts a locating by GPS triangulation illustration fordiscussing automatic location of a MS, for example a DLM 200. A MS, forexample DLM 200, is located through GPS triangulation as is well knownin the art. At least three satellites, for example, satellite 134,satellite 136, and satellite 138, are necessary for locating the MS. Afourth satellite would be used if elevation, or altitude, was configuredfor use by the present disclosure. Ground based stationary referencescan further enhance whereabouts determination.

FIG. 4B depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a GPS triangulated MS, for example a DLM200. Repeated continuous GPS location processing begins at block 410 andcontinues to block 412 where the MS initializes to the GPS interface,then to block 414 for performing the conventional locating of the GPSenabled MS, and then to block 416 for calculating location information.In some embodiments, block 412 may only be necessary a first time priorto repeated invocations of FIG. 4B processing. Block 414 may be animplicit wait for pulses from satellites, or an event driven mechanismwhen GPS satellite pulses are received for synchronized collection, or amultithreaded implementation concurrently listening for, and processingcollaboratively, the signals. Block 414 and block 416 processing is wellknown in the art. Thereafter, the MS completes a WDR 1100 at block 418,block 420 prepares parameters for FIG. 2F invocation, and block 422invokes, with the WDR, the FIG. 2F processing (described above).Processing then terminates at block 424. Parameters prepared at block420 are: WDRREF=a reference or pointer to the WDR; DELETEQ=FIG. 4Blocation queue discard processing; and SUPER=FIG. 4B supervisorynotification processing. GPS location processing is preferablycontinuous for the MS as long as the MS is enabled.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 418:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The GPS location of theMS.CONFIDENCE field 1100 d is preferably set with: Confidence of GPSvariety (usually high) which may be set with the same value (e.g. 95 forDGPS, 93 for AGPS, and 90 for GPS). In other embodiments, field 1100 dwill be determined (completely, or amending the defaulted value) by theMS for timing measurements, signal strengths, and/or the abundance ofparticular signals available for processing, similarly to as describedabove. An MS may not be aware of the variety of GPS, in which casestraight GPS is assumed.LOCATION TECHNOLOGY field 1100 e is preferably set with: “GPS”, “A-GPS”,or “D-GPS”, depending on (if known) flavor of GPS. The originatorindicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset) for indicating that data was factored into determining confidence,and none is relevant for a single TDOA or AOA measurement in subsequentprocessing.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with:Parameters referencing MS internals, if desired.SPEED field 1100 h is preferably set with: Speed determined by the MSusing a suitable GPS interface, or historical information (queue 22and/or history 30) and artificial intelligence interrogation of MStravels to determine, if reasonable.HEADING field 1100 i is preferably set with: Heading determined by theMS using a suitable GPS interface, or historical information (queue 22and/or history 30) and artificial intelligence interrogation of MStravels to determine, if reasonable.ELEVATION field 1100 j is preferably set with: Elevation/altitude, ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIG. 5A depicts a locating by stationary antenna triangulationillustration for discussing automatic location of a MS, for example DLM200. There may be communication/transmission issues when an MS is takenindoors. Shown is a top view of an indoor floor plan 502. Antennastations 504 (shown generally as 504) are strategically placed over thearea so that an MS can be located. Triangulation techniques again apply.At least three antenna stations, for example, station 504 f, station 504h, and station 504 i are used to locate the MS, for example DLM 200. Infloor plan embodiments where aisles delimit travel, only two antennastations may be necessary, for example at either end of the particularaisle. While most stations 504 may receive signals from the MS, only thestrongest stations are used. FIG. 5A and associated discussions can alsobe used for an outside triangulation embodiment using a similarstrategic antenna placement scheme. Processing described for FIGS. 3A to3C can also be used for an indoor embodiment as described by FIG. 5A.

FIG. 5B depicts a flowchart for describing a preferred embodiment of thewhereabouts update event of a stationary antenna triangulated MS, forexample a DLM 200. In one embodiment, indoor location technology ofPinpoint corporation (Pinpoint is a trademark of Pinpoint Corporation)is utilized to locate any MS that moves about the indoor location. ThePinpoint corporation methodology begins at block 510 and continues toblock 512. A cell controller drives antenna stations to emit a broadcastsignal from every station. Any MS within range (i.e. indoors) will phasemodulate its unique identifier onto a return signal it transmits, atblock 514. Stations at block 516 receive the transmission and strengthof signal. The cell controller that drives stations sorts out andselects the strongest (e.g. 3) signals. The cell controller, at block518, also extracts the unique MS identifier from the return signal, andTDOA is used to calculate distances from the stations receiving thestrongest signals from the MS at block 520. Alternative embodiments canuse AOA or MPT to determine locations. The locations of the controllerselected stations are registered in an overlay map in an appropriatecoordinate system, landmark system, or grid of cells. Block 522 locatesthe MS using the overlay map, locations of the (e.g. 3) selectedstations, and the calculated distances triangulated from the selectedstations, using TDOA, AOA, or MPT in various embodiments. Thereafter,block 524 calculates location information of the MS. Processingcontinues with repeated broadcast at block 512 and subsequent processingfor every MS within range.

Thereafter, block 526 accesses historical MS location information,performs housekeeping by pruning location history data for the MS bytime, number of entries, or other criteria, and determines a heading(direction) of the MS based on previous location information. Block 526may perform Artificial Intelligence (AI) to determine where the MS maybe going by consulting many or all of the location history data.Thereafter, block 528 completes a service side WDR 1100, block 530appends the WDR information to location history data and notifies asupervisory service if there is one outside of the service processing ofFIG. 5B. Processing continues to block 532 where the servicecommunicates the WDR to the located MS.

Thereafter, the MS completes the WDR at block 534 for adding to WDRqueue 22. Thereafter, block 536 prepares parameters passed to FIG. 2Fprocessing for: WDRREF=a reference or pointer to the MS WDR;DELETEQ=FIG. 5B location queue discard processing; and SUPER=FIG. 5Bsupervisory notification processing (e.g. no supervisory notificationprocessing because it was already handled at block 530, or by being incontext of the FIG. 5B service processing). Block 536 continues to block538 where the MS invokes FIG. 2F processing already described above.After block 538, processing continues back to block 514. Of course,block 532 continues directly to block 514 at the service(s) since thereis no need to wait for MS(s) processing in blocks 534 through 538. FIG.5B processing is continuous for every MS in the wireless network 7 daysa week, 24 hours a day.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 534:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The triangulated locationof the MS as communicated by the service.CONFIDENCE field 1100 d is preferably set with: Confidence oftriangulation determined by the service which is passed to the MS atblock 532. The confidence value may be set with the same value (e.g. 95(normally high for triangulation using densely positioned antennas))regardless of how the MS was triangulated. In other embodiments, field1100 d will be determined (completely, or adjusting the value of 95) bythe service for TDOA measurements used, AOA measurements, signalstrengths, wave spectrum involved, and/or the abundance of particular MSsignals available for processing. Higher confidences are assigned forsmaller TDOA measurements (shorter distances), strong signal strengths,and numerous additional data points beyond what is necessary to locatethe MS. Lower confidences are assigned for larger TDOA measurements,weak signal strengths, and minimal data points necessary to locate theMS. A reasonable confidence can be assigned using this information asguidelines where 1 is the lowest confidence and 100 is the highestconfidence.LOCATION TECHNOLOGY field 1100 e is preferably set with: “Server AntennaTDOA”, “Server Antenna AOA”, or “Server Antenna MPT”, depending on howthe MS was located and what flavor of service was used. The originatorindicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset) for indicating that all triangulation data was factored intodetermining confidence, and none is relevant for a single TDOA or AOAmeasurement in subsequent processing (i.e. service did all the work).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: Service WDR information atblock 532, wherein the service used historical information andartificial intelligence interrogation of MS travels to determine, ifavailable.HEADING field 1100 i is preferably set with: Service WDR information atblock 532, wherein the service used historical information andartificial intelligence interrogation of MS travels to determine, ifavailable.ELEVATION field 1100 j is preferably set with: Elevation/altitude, ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIG. 6A depicts a flowchart for describing a preferred embodiment of aservice whereabouts update event of a physically, or logically,connected MS, for example a DLM 200. A MS may be newly located andphysically, or logically, connected, whereby communications between theMS and service is over a physical/logical connection. Physicalconnections may occur by connecting a conduit for communications to theMS, or from the MS to a connection point. Conduits include ethernetcables, optical fiber, firewire, USB, or any other means for conduit forcommunications through a physical medium. Conduits also include wirelessmediums (air) for transporting communications, such as when an MS comesinto physical wireless range eligible for sending and receivingcommunications. Logical connections may occur, after a physicalconnection already exists, for example through a successfulcommunication, or authenticated, bind between a MS and other MS, or MSand service. Logical connections also include the result of:successfully logging into an application, successfully authenticated foraccess to some resource, successfully identified by an application, orany other logical status upon a MS being certified, registered, signedin, authenticated, bound, recognized, affirmed, or the like.

Relevant processing begins at block 602 and continues to block 604 wherean MS device is physically/logically connected to a network. Thereafter,the MS accesses a service at block 606. Then, at block 608, the serviceaccesses historical MS location history along with the connectivityaddress, and block 610 performs housekeeping by pruning the locationhistory data maintained for the MS by time, number of entries, or othercriteria. Block 610 may perform Artificial Intelligence (AI) todetermine where the MS may be going (e.g. using heading based onprevious locations) by consulting much or all of the location historydata. Thereafter, service processing at block 612 completes a serviceside WDR 1100, then the service appends WDR information to locationhistory data at block 614, and may notify a supervisory service if thereis one outside of the service processing of FIG. 6A. Processingcontinues to block 616 where the service communicates WDR information tothe newly physically/logically connected MS. There are many embodimentsfor determining a newly connected MS location using a physical orlogical address, for example consulting a database which maps locationsto network addresses (e.g. location to logical ip address; location tophysical wall jack/port; etc). Then, at block 618 the MS completes itsown WDR using some information from block 616, FIG. 2F parameters areprepared at block 620, block 622 invokes FIG. 2F processing alreadydescribed above, and processing terminates at block 624. Parameters areset at block 620 for: WDRREF=a reference or pointer to the MS WDR;DELETEQ=FIG. 6A location queue discard processing; and SUPER=FIG. 6Asupervisory notification processing (e.g. no supervisory notificationprocessing because it was already handled at block 614, or by being incontext of the FIG. 6A service processing). Of course, block 616continues directly to block 624 at the service(s) since there is no needto wait for MS processing in blocks 618 through 622. FIG. 6A processingis available at any appropriate time in accordance with the underlyingservice.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 618:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The location of the MS ascommunicated by the service.CONFIDENCE field 1100 d is preferably set with: Confidence (determinedby the service) according to how the MS was connected, or may be setwith the same value (e.g. 100 for physical connect, 77 for logicalconnect (e.g. short range wireless)) regardless of how the MS waslocated. In other embodiments, field 1100 d will be determined by theservice for anticipated physical conduit range, wireless logical connectrange, etc. The resulting confidence value can be adjusted based onother parameters analogously to as described above.LOCATION TECHNOLOGY field 1100 e is preferably set with “ServicePhysical Connect” or “Service Logical Connect”, depending on how the MSconnected. The originator indicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset), but if a TDOA measurement can be made (e.g. short range logicalconnect, and using methodologies described above), then a TDOAmeasurement, a communications signal strength, if available; and wavespectrum (and/or particular communications interface 70) used, ifavailable. The TDOA measurement may be converted to a distance usingwave spectrum information. Possible values populated here should havealready been factored into the confidence value.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: null (not set), but can beset with speed required to arrive to the current location from apreviously known location, assuming same time scale is used.HEADING field 1100 i is preferably set with: null (not set), but can beset to heading determined when arriving to the current location from apreviously known location.ELEVATION field 1100 j is preferably set with: Elevation/altitude (e.g.of physical connection, or place of logical connection detection), ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIG. 6B depicts a flowchart for describing a preferred embodiment of aMS whereabouts update event of a physically, or logically, connected MS,for example a DLM 200. A MS may be newly located andphysically/logically connected, whereby communications between the MSand service is over a physical/logical connection as described in FIG.6A above. Relevant processing begins at block 640 and continues to block642 where an MS device is physically/logically connected. Thereafter, atblock 644 the MS accesses the connectivity service and waits for anacknowledgement indicating a successful connection. Upon acknowledgementreceipt, processing continues to block 646 where the MS requests WDRinformation via the connectivity service and waits for the data (i.e.connectivity service may be different than the location service, or maybe one in the same). As part of connectivity, location servicepointer(s) (e.g. ip address for http://11112.34.323.18 referencing or aDomain Name Service (DNS) name like http://www.servicename.com) areprovided with the connectivity acknowledgement from the connectivityservice at block 644, so the MS knows how to proceed at block 646 forretrieving location information. There are various embodiments for thelocation service determining a MS location as described above for FIG.6A. In an alternative embodiment, the MS already knows how to locateitself wherein block 644 continues directly to block 648 (no block 646)because the MS maintains information for determining its own whereaboutsusing the physical or logical address received in the acknowledgement atblock 644. Similar mapping of a network address to the MS location canbe in MS data, for example data 36, data 8, or data 20. At block 648,the MS completes its WDR 1100. Thereafter, block 650 prepares FIG. 2Fparameters, block 652 invokes FIG. 2F processing already describedabove, and processing terminates at block 654. Parameters set at block650 are: WDRREF=a reference or pointer to the MS WDR; DELETEQ=FIG. 6Blocation queue discard processing; and SUPER=FIG. 6B supervisorynotification processing. FIG. 6B processing is available at anyappropriate time to the MS.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 648:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The location determinedfor the MS.CONFIDENCE field 1100 d is preferably set with: Confidence (determinedby the service) according to how the MS was connected, or may be setwith the same value (e.g. 100 for physical connect, 77 for logicalconnect (e.g. short range wireless)) regardless of how the MS waslocated. In other embodiments, field 1100 d will be determined by theservice for anticipated physical conduit range, wireless logical connectrange, etc. The resulting confidence value can be adjusted based onother parameters analogously to as described above.LOCATION TECHNOLOGY field 1100 e is preferably set with “Client PhysicalConnect” or “Client Logical Connect”, depending on how the MS connected.The originator indicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset), but if a TDOA measurement can be made (e.g. short range logicalconnect, and using methodologies described above), then a TDOAmeasurement, a communications signal strength, if available; and wavespectrum (and/or particular communications interface 70) used, ifavailable. The TDOA measurement may be converted to a distance usingwave spectrum information. Possible values populated here should havealready been factored into the confidence value.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: null (not set), but can beset with speed required to arrive to the current location from apreviously known location using, assuming same time scale is used.HEADING field 1100 i is preferably set with: null (not set), but can beset to heading determined when arriving to the current location from apreviously known location.ELEVATION field 1100 j is preferably set with: Elevation/altitude (e.g.of physical connection, or place of logical connection detection), ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIGS. 7A, 7B and 7C depict a locating by image sensory illustration fordiscussing automatic location of a MS, for example a DLM 200. Withreference now to FIG. 7A, an image capture device 702 is positioned formonitoring MSs that come into the field of view 704 of device 702.Device 702 may be a camcorder, video camera, image camera that takes atleast one snapshot, timely snapshots, or motion/presence detectionsnapshots, or any other device capable of producing at least a snapshotimage at some point in time containing objects in the field of view 704.In one preferred embodiment, DLM 200 is sensed within the vicinity ofdevice 702, perhaps by antenna (or cell tower) 701, prior to beingphotographed by device 702. In another embodiment, DLM 200 is sensed bymovement within the vicinity of device 702 with well know motiondetection means. In yet another embodiment, device 702 periodically orcontinually records. Device 702 is connected to a locating service 700for processing as described by FIG. 7D. Locating service 700 has meansfor communicating wirelessly to DLM 200, for example through a connectedantenna (or cell tower) 701. FIG. 7A illustrates that device 702participates in pattern recognition for identifying the location of aMS. The MS can have on its exterior a string of characters, serialnumber, barcode, license plate, graphic symbol(s), textual symbols,combinations thereof, or any other visually perceptible, or graphical,identification 708 that can be recognized optically, or in a photograph.Device 702 is to have graphical/pixel resolution capability matching therequirements for identifying a MS with the sought graphicalidentification. Graphical identification 708 can be formed on theperceptible exterior of DLM 200, or can be formed as part of ahousing/apparatus 706 which hosts DLM 200. Graphical identification 708can be automatically read from an image using well known barcode readertechnology, an Optical Character Recognition (OCR) process, a licensetag scanner, general pattern recognition software, or the like. Housing706 is generally shown for representing an automobile (license platerecognition, for example used in prior art toll tag lanes), a shoppingcart, a package, or any other hosting article of manufacture which has aDLM 200 as part of it. Upon recognition, DLM 200 is associated with thelocation of device 702. Error in locating an MS will depend on thedistance within the field of view 704 from device 702. A distance may beestimated based on the anticipated size of identification 708, relativeits size determined within the field of view 704.

With reference now to FIG. 7B, image capture device 702 is positionedfor monitoring MSs that come into the field of view 704 of device 702.MSs are preferably distinguishable by appearance (e.g. color, shape,markings, labels, tags, etc), or as attached (e.g. recognized mount tohost) or carried (e.g. recognized by its recognized user). Suchtechniques are well known to those skilled in the art. Device 702 is asdescribed above with connectivity to locating service 700 and antenna(or cell tower) 701. FIG. 7B illustrates that device 702 uses knownmeasurements within its field of view for determining how large, andwhere located, are objects that come into the field of view 704. Forexample, a well placed and recognizable vertical line 710 a andhorizontal line 710 b, which are preferably perpendicular to each other,have known lengths and positions. The objects which come into the fieldof view are measured based on the known lengths and positions of thelines 710 a and 710 b which may be landscape markings (e.g. parking lotlines) for additional purpose. Field of view 704 may contain many linesand/or objects of known dimensions strategically placed or recognizedwithin the field of view 704 to facilitate image processing by service700. Building 714 may serve as a reference point having known dimensionand position in measuring objects such as a person 716 or DLM 200. Amoving object such as a shopping cart 712 can have known dimensions, butnot a specific position, to facilitate service 700 in locating an MScoming into the field of view 704. Those skilled in the art recognizethat known dimensions and/or locations of anticipated objects in fieldof view 704 have measurements facilitating discovering positions andmeasurements of new objects that may travel into the field of view 704.Using FIG. 7B techniques with FIG. 7A techniques provides additionallocating accuracy. A distance may be estimated based on the anticipatedsizes of references in the field of view, relative size of therecognized MS.

With reference now to FIG. 7C, image capture device 702 is positionedfor monitoring MSs that come into the field of view 704 of device 702.Device 702 is as described above with connectivity to locating service700 and antenna (or cell tower) 701. MSs are preferably distinguishableby appearance (e.g. color, shape, markings, labels, tags, etc), or asattached (e.g. recognized mount to host) or carried (e.g. recognized byits user), or as identified by FIG. 7A and/or FIG. 7B methodologies.FIG. 7C illustrates that device 702 uses known locations within itsfield of view for determining how large, and where located, are objectsthat come into the field of view 704. For example, building 714, tree720, and traffic sign 722 have its locations known in field of view 704by service 700. Solving locations of objects that move into the field ofview is accomplished with graphical triangulation measurements betweenknown object reference locations (e.g. building 714, tree 720, and sign722) and the object to be located. Timely snapshots by device 702provide an ongoing locating of an MS, for example DLM 200. Line segmentdistances 724 (a, b, c) can be measured using references such as thoseof FIG. 7B. Whereabouts are determined by providing known coordinates toanticipated objects such as building 714, tree 720, and sign 722.Similarly, graphical AOA measurements (i.e. graphical anglemeasurements) and graphical MPT measurements can be used in relation toanticipated locations of objects within the field of view 704. There maybe many anticipated (known) object locations within field of view 704 tofurther facilitate locating an MS. Being nearby an object may also beenough to locate the MS by using the object's location for the locationof the MS. Using FIG. 7C techniques with FIG. 7A and/or FIG. 7Btechniques provides additional locating accuracy.

The system and methodologies illustrated by FIGS. 7A through 7C arepreferably used in optimal combination by locating service 700 toprovide a best location of an MS. In some embodiments, MS whereabouts isdetermined as the location of a device 702 by simply being recognized bythe device 702. In other embodiments, multiple devices 702 can bestrategically placed within a geographic area for being used incombination to a common locating service 700 for providing a mostaccurate whereabouts of an MS. Multiple field of views 704 fromdifference angles of different devices 702 enable more precise locatingwithin three dimensional space, including precise elevations.

FIG. 7D depicts a flowchart for describing a preferred embodiment ofgraphically locating a MS in accordance with locating service 700described above, for example as illustrated by FIGS. 7A through 7C.Locating service 700 may be a single capable data processing system, ormany connected data processing systems for enhanced parallel processing.Locating service 700 may be connected to services involved with anyother locating technology described in this application for synergisticservices as an MS is mobile. Locating service 700 begins at block 732and continues to block 734 where the service 700 is initialized inpreparation of MS whereabouts analysis. Block 734 initializes itstable(s) of sought identifying criteria which can be pattern recognized.In one preferred embodiment, color/shade, shape, appearance andapplicable sought information is initialized for each sought identifyingcriteria. Pattern recognition is well known in the art andinitialization is specific for each technology discussed above for FIGS.7A through 7C. For FIGS. 7B and 7C discussions, positions, measurements,and reference points of known landmarks are additionally accounted.Thereafter, block 736 gets the next snapshot from device(s) 702. Ifthere is none waiting to get, block 736 waits for one. If there is onequeued up for processing, then block 736 continues to block 738. FIG. 7Dis processing of a service, and is preferably multi-threaded. Forexample, blocks 736 through 754 can occur concurrently in many threadsfor processing a common queue of snapshots received from a device 702,or many devices 702. Each thread may process all sought criteria, or mayspecialize in a subset of sought criteria wherein if nothing is found,the thread can place the snapshot back on a queue for thread processingfor another sought criteria after marking the queue entry as having beenprocessed for one particular subset. So, threads may be specialized andwork together in seeking all criteria, or may each work in parallelseeking the same criteria. In preferred embodiments, there is at leastone queue of snapshots received by block(s) 736. Block 736 continues toblock 738 which attempts to detect an MS having sought criteria usingpattern recognition techniques of FIGS. 7A through 7C, in particular, orin combination. In one example embodiment, as device 702 providesservice 700 with at least one timely snapshot to block 736, the snapshotgraphic is scanned at block 738 for identifyingcharacters/symbols/appearance of sought criteria. Block 738 continueswith its search result to block 740. If block 740 determines no MS wasdetected, then processing continues back to block 736. If block 738detected at least one MS (as determined at block 740), then block 742calculates WDR information for the MS(s) detected, block 744 notifies asupervisory service of MS whereabouts if applicable, block 746communicates the WDR information to MS(s) detected (for example viaantenna 701), and processing continues to block 748.

There may be a plurality of MSs in the field of view, so communicationsat block 746 targets each MS recognized. A MS should not rely on theservice to have done its job correctly. At a MS, block 748 checks the MSID communicated for validation. If block 748 determines the MS ID isincorrect, then processing continues back to block 736 (for theparticular MS). If block 748 determines the MS ID is correct, thenprocessing continues to block 750 where the particular MS completes itsWDR 1100 received from service 700. Thereafter, MS(s) prepare parametersat block 752, invoke local FIG. 2F processing already described above(at block 754), and processing continues for service 700 back to block736. Of course, block 746 continues directly to block 736 at theservice(s) since there is no need to wait for MS(s) processing in blocks748 through 754. Parameters set at block 752 are: WDRREF=a reference orpointer to the MS WDR; DELETEQ=FIG. 7D location queue discardprocessing; and SUPER=FIG. 7D supervisory notification (e.g. nosupervisory notification processing because it was already handled atblock 744, or by being in context of the FIG. 7D service processing). Nosnapshots from device 702 are to be missed at block 736.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 750:

MS ID field 1100 a is preferably set with: Unique MS identifier of theMS, after validating at the MS that the service 700 has correctlyidentified it. This field is used to uniquely distinguish this MS WDRson queue 22 from other originated WDRs. The service 700 may determine aMS ID from a database lookup using above appearance criteria. Field 1100a may also be determined using the transmission methods as described forFIGS. 2A through 2E, for example by way of antenna 701. For example,when the MS comes within range of antenna 701, FIG. 7D processingcommences. Another embodiment prevents recognizing more than one MSwithin the field of view 704 at any time (e.g. a single file entryway),in which case the service can solicit a “who are you” transmission toidentify the MS and then send back its whereabouts (in which case the MSsets its own MS ID here).DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The location determinedfor the MS by the service.CONFIDENCE field 1100 d is preferably set with: same value (e.g. 76)regardless of how the MS location was determined. In other embodiments,field 1100 d will be determined by the number of distance measurementsand/or the abundance of particular objects used in the field of view704. The resulting confidence value can be adjusted based on othergraphical parameters involved, analogously to as described above.LOCATION TECHNOLOGY field 1100 e is preferably set with: “ServerGraphic-Patterns” “Server Graphic-Distances”, “Server GraphicTriangulate”, or a combination field value depending on how the MS waslocated and what flavor of service was used. The originator indicator isset to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset) for indicating that all whereabouts determination data was factoredinto the confidence, and none is relevant for a single TDOA or AOAmeasurement in subsequent processing (i.e. service did all the work).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: null (not set), but can beset with speed required to arrive to the current location from apreviously known time at a location (e.g. using previous snapshotsprocessed), assuming the same time scale is used.HEADING field 1100 i is preferably set with: null (not set), but can beset to heading determined when arriving to the current location from apreviously known location (e.g. using previous snapshots processed).ELEVATION field 1100 j is preferably set with: Elevation/altitude, ifavailable, if available.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

In an alternative embodiment, MS 2 may be equipped (e.g. as part ofresources 38) with its own device 702 and field of view 704 forgraphically identifying recognizable environmental objects or places todetermine its own whereabouts. In this embodiment, the MS would haveaccess to anticipated objects, locations and dimensions much the sameway described for FIGS. 7A through 7D, either locally maintained orverifiable with a connected service. Upon a successful recognition of anobject, place, or other graphically perceptible image which can bemapped to a location, the MS would complete a WDR similarly to above.The MS may recognize addresses, buildings, landmarks, of other pictorialdata. Thus, the MS may graphically determine its own location. The MSwould then complete a WDR 1100 for FIG. 2F processing exactly asdescribed for FIG. 7D with the exceptions of fields that follow:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: The location determinedfor the MS by the MS.LOCATION TECHNOLOGY field 1100 e is preferably set with: “ClientGraphic-Patterns” “Client Graphic-Distances”, “Client GraphicTriangulate”, or a combination field value depending on how the MSlocated itself. The originator indicator is set to DLM.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: null(not set).

FIG. 8A heterogeneously depicts a locating by arbitrary wave spectrumillustration for discussing automatic location of a MS. In the case ofacoustics or sound, prior art has shown that a noise emitting animal orobject can be located by triangulating the sound received using TDOA bystrategically placed microphones. It is known that by figuring out timedelay between a few strategically spaced microphones, one can infer thelocation of the sound. In a preferred embodiment, an MS, for example DLM200, emits a pulsed or constant sound (preferably beyond the humanhearing range) which can be sensed by microphones 802 though 806. Datais superimposed on the sound wave spectrum with variations in pitch ortone, or data occurs in patterned breaks in sound transmission. Data maycontain a unique identifier of the MS so service(s) attached tomicrophones 802 through 806 can communicate uniquely to an MS. In someembodiments, sound used by the MS is known to repel certain pests suchas unwanted animals, rodents, or bugs in order to prevent the personcarrying the MS from encountering such pests during travel, for exampleduring outdoor hiking or mountain climbing. In submarine acoustics, AOAis a method to locate certain objects. The FIGS. 3B and 3C flowchartsoccur analogously for sound signals received by microphones 802 through806 which are connected to service processing of FIGS. 3B and 3C. Theonly difference is wave spectrum used.

It has been shown that light can be used to triangulate position orlocation information (e.g. U.S. Pat. No. 6,549,288 (Migdal et al) andU.S. Pat. No. 6,549,289 (Ellis)). Optical sensors 802 through 806 detecta light source of, or illumination of, an MS, for example DLM 200. Datais superimposed on the light wave spectrum with specifiedfrequency/wavelength and/or periodicity, or data occurs in patternedbreaks in light transmission. Data may contain a unique identifier ofthe MS so service(s) attached to sensors 802 through 806 can communicateuniquely to an MS. Mirrors positioned at optical sensors 802 through 806may be used to determine an AOA of light at the sensor, or alternativelyTDOA of recognizable light spectrum is used to position an MS. The FIGS.3B and 3C flowcharts occur analogously for light signals received bysensors 802 through 806 which are connected to service processing ofFIGS. 3B and 3C. The only difference is wave spectrum used.

Heterogeneously speaking, FIG. 8A illustrates having strategicallyplaced sensors 802 through 806 for detecting a wave spectrum and usingTDOA, AOA, or MPT. Those skilled in the art appreciate that a wave isanalogously dealt with by FIGS. 3B and 3C regardless of the wave type,albeit with different sensor types 802 through 806 and different sensorinterface to service(s) of FIGS. 3B and 3C. Wave signal spectrums fortriangulation by analogous processing to FIGS. 3B and 3C includemicrowaves, infrared, visible light, ultraviolet light, X-rays, gammarays, longwaves, magnetic spectrum, or any other invisible, visible,audible, or inaudible wave spectrum. Sensors 802 through 806 areappropriately matched according to the requirements. Alternatively, a MSmay be sensing wave spectrums emitted by transmitters 802 through 806.

Those skilled in the relevant arts appreciate that the point in all thisdiscussion is all the wave forms provide methods for triangulatingwhereabouts information of an MS. Different types of wave forms that areavailable for an MS can be used solely, or in conjunction with eachother, to determine MS whereabouts. MSs may be informed of theirlocation using the identical wave spectrum used for whereaboutsdetermination, or may use any other spectrum available for communicatingWDR information back to the MS. Alternatively, the MS itself candetermine WDR information relative applicable sensors/transmitters. Inany case, a WDR 1100 is completed analogously to FIGS. 3B and 3C.

FIG. 8B depicts a flowchart for describing a preferred embodiment oflocating a MS through physically sensing a MS, for example a DLM 200.Processing begins at block 810 upon contact with a candidate MS andcontinues to block 812 where initialization takes place. Initializationincludes determining when, where, and how the contact was made. Then,block 814 takes the contact sample and sets it as input containing aunique identifier or handle of the MS which was sensed. There arevarious known embodiments of how the MS is sensed:

-   -   a) Touching sensors contact the MS (or host/housing having MS)        to interpret physical characteristics of the MS in order to        uniquely identify it (e.g. Braille, embossed/raised/depressed        symbols or markings, shape, temperature, depressions, size,        combinations thereof, etc);    -   b) Purchase is made with MS while in vicinity of device        accepting purchase, and as part of that transaction, the MS is        sensed as being at the same location as the device accepting        purchase, for example using a cell phone to purchase a soft        drink from a soft drink dispensing machine;    -   c) Barcode reader is used by person to scan the MS (or        host/housing having MS), for example as part of shipping,        receiving, or transporting;    -   d) The MS, or housing with MS, is sensed by its odor (or        host/housing having MS), perhaps an odor indicating where it had        been, where it should not be, or where it should be. Various        odor detection techniques may be used;    -   e) Optical sensing wherein the MS is scanned with optical        sensory means, for example to read a serial number; and/or    -   f) Any sensing means which can identify the MS through physical        contact, or by nearby/close physical contact with some wave        spectrum.        Block 814 continues to block 816 where a database is accessed        for recognizing the MS identifier (handle) by mapping sensed        information with an associated MS handle. If a match is found at        block 818, then block 822 determines WDR 1100 information using        the location of where sensing took place. If block 818        determines no match was found, then data is saved at block 820        for an unrecognized entity such as is useful when an MS should        have been recognized, but was not. In another embodiment, the MS        handle is directly sensed so block 814 continues directly to        block 818 (no block 816). Block 820 continues to block 834 where        processing terminates. Block 816 may not use the entire MS        identifier for search, but some portion of it to make sure it is        a supported MS for being located by sensing. The MS identifier        is useful when communicating wirelessly the WDR information to        the MS (at block 826).

Referring now back to block 822, processing continues to block 824 wherea supervisory service may be updated with the MS whereabouts (ifapplicable), and block 826 communicates the WDR information to the MS.Any available communication method can be used for communicating the WDRinformation to the MS, as described above. Thereafter, the MS completesthe WDR at block 828, block 830 prepares FIG. 2F parameters, and block832 invokes FIG. 2F processing already described above. Processingterminates thereafter at block 834. Parameters set at block 830 are:WDRREF=a reference or pointer to the MS WDR; DELETEQ=FIG. 8B locationqueue discard processing; and SUPER=FIG. 8B supervisory notification(e.g. no supervisory notification processing because it was alreadyhandled at block 824, or by being in context of the FIG. 8B serviceprocessing). FIG. 8B processing is available at any appropriate time forthe MS. In an alternate embodiment, the MS senses its environment todetermine whereabouts.

See FIG. 11A descriptions. Fields are set to the following upon exitfrom block 828:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: Location of the sensorsensing the MS.CONFIDENCE field 1100 d is preferably set with: Should be highconfidence (e.g. 98) for indisputable contact sensing and is typicallyset with the same value.LOCATION TECHNOLOGY field 1100 e is preferably set with: “Contact”, or aspecific type of Contact. The originator indicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Sameas was described for FIG. 2D (block 236) above.SPEED field 1100 h is preferably set with: null (not set), but can beset with speed required to arrive to the current location from apreviously known time at a location, assuming the same time scale isused.HEADING field 1100 i is preferably set with: null (not set), but can beset to heading determined when arriving to the current location from apreviously known location.ELEVATION field 1100 j is preferably set with: Elevation/altitude, ifavailable.APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIG. 8C depicts a flowchart for describing a preferred embodiment oflocating a MS, for example a DLM 200, through a manually enteredlocation of the MS. MS user interface processing begins at block 850when a user starts the user interface from code 18 and continues toblock 852. Any of a variety of user interfaces, dependent on the type ofMS, is used for manually entering the location of the MS. A userinterfaces with the MS at block 852 until one of the monitored actionsrelevant to this disclosure are detected. Thereafter, if block 854determines the user has selected to set his location manually, thenprocessing continues to block 860. If block 854 determines the user didnot select to manually set his location, then block 856 determines ifthe user selected to force the MS to determine its location. If the userdid select to force the MS to get its own location, then block 856continues to block 862. If the user did not select to force the MS toget its own location as determined by block 856, then processingcontinues to block 858. If block 858 determines the user wanted to exitthe user interface, then block 880 terminates the interface andprocessing terminates at block 882. If block 858 determines the user didnot want to exit the user interface, then block 884 handles any userinterface actions which caused exit from block 852 yet were not handledby any action processing relevant to this disclosure.

With reference back to block 860, the user interfaces with the MS userinterface to manually specify WDR information. The user can specify:

-   -   1) An address or any address subset such as a zip code;    -   2) Latitude, longitude, and elevation;    -   3) MAPSCO identifier;    -   4) FEMA map identifier;    -   5) USDA map identifier;    -   6) Direct data entry to a WDR 1100; or    -   7) Any other method for user specified whereabouts of the MS.

The user can specify a relevant confidence value for the manuallyentered location, however, processing at block 860 preferablyautomatically defaults a confidence value for the data entered. Forexample, a complete address, validated at block 860, will have a highconfidence. A partial address such as city and state, or a zip code willhave a low confidence value. The confidence value will reflect how largean area is candidate for where the MS is actually located. To preventcompletely relying on the user at block 860 for accurate WDRinformation, validation embodiments may be deployed. Some examples:

-   -   Upon specification (e.g. FEMA), the MS will access connected        service(s) to determine accuracy (FEMA conversion tables);    -   Upon specification (e.g. MAPSCO), the MS will access local        resources to help validate the specification (e.g. MAPSCO        conversion tables); and/or    -   Upon specification (e.g. address), the MS can access queue 22        and/or history 30 for evidence proving likelihood of accuracy.        The MS may also access services, or local resources, for        converting location information for proper comparisons.        In any case, a confidence field 1100 d value can be        automatically set based on the validation results, and the        confidence may, or may not, be enabled for override by the user.

After WDR information is specified at block 860, the MS completes theWDR at block 874, block 876 prepares parameters for FIG. 2F processing,and (at block 878) the MS invokes FIG. 2F processing already describedabove before returning back to block 852. Parameters set at block 876are: WDRREF=a reference or pointer to the MS WDR; DELETEQ=FIG. 8Clocation queue discard processing; and SUPER=FIG. 8C supervisorynotification processing. Various embodiments permit override of theconfidence floor value by the user, or by FIG. 8C processing. Block 874may convert the user specified information into a standardized moreusable form in an LN-expanse (e.g. convert to latitude and longitude ifpossible, truncated precision for more area coverage). WDR 1100 fields(see FIG. 11A) are set analogously in light of the many variationsalready described above.

With reference back to block 862, if it is determined that the MS isequipped with capability (e.g. in range, or in readiness) to locateitself, then processing continues to block 864 where the MS locatesitself using MS driven capability described by FIGS. 2E, 3C, 4B, 6B, and8A or MS driven alternative embodiments to FIGS. 2D, 3B, 5B, 6A, 7D, 8A,and 8B, or any other MS capability for determining its own whereaboutswith or without help from other data processing systems or services.Interfacing to locating capability preferably involves a timeout in casethere is no, or slow, response, therefore block 864 continues to block868 where it determined whether or not block 864 timed out prior todetermining a location. If block 868 determines a timeout wasencountered, then block 872 provides the user with an error to the userinterface, and processing continues back to block 852. Block 872preferably requires use acknowledgement prior to continuing to block852.

If block 868 determines there was no timeout (i.e. whereaboutssuccessfully determined), then block 870 interfaces to the locatinginterface to get WDR information, block 874 completes a WDR, and blocks876 and 878 do as described above. If block 862 determines the MS cannotlocate itself and needs help, then block 866 emits at least onebroadcast request to any listening service which can provide the MS itslocation. Appropriate correlation is used for an anticipated response.Example services listening are service driven capability described byFIGS. 2D, 3B, 5B, 6A, 7D, 8A, and 8B, or service side alternativeembodiments of FIGS. 2E, 3C, 4B, 6B, and 8A, or any other servicecapability for determining MS whereabouts with or without help from theMS or other data processing systems or services. Block 866 thencontinues to block 868.

If block 868 determines a timeout was encountered from the servicebroadcast request, then block 872 provides the user with an error to theuser interface, and processing continues back to block 852. If block 868determines there was no timeout (i.e. whereabouts successfullydetermined), then block 870 receives WDR information from the locatinginterface of the responding service, block 874 completes a WDR, andblocks 876 and 878 do as already described above.

See FIG. 11A descriptions. Depending how the MS was located viaprocessing started at block 856 to block 862, a WDR is completedanalogous to as described in Figs. above. If the user manually specifiedwhereabouts at block 860, fields are set to the following upon exit fromblock 874:

MS ID field 1100 a is preferably set with: Same as was described forFIG. 2D (block 236) above.DATE/TIME STAMP field 1100 b is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above.LOCATION field 1100 c is preferably set with: Location entered by theuser, or converted from entry by the user; preferably validated.CONFIDENCE field 1100 d is preferably set with: User specifiedconfidence value, or a system assigned value per a validated manualspecification. Confidence should reflect confidence of locationprecision (e.g. validated full address high; city and zip code low,etc). Manually specified confidences are preferably lower than otherlocation technologies since users may abuse or set incorrectly, unlessvalidated. Specifying lower confidence values than technologies above,for completely manual WDR specifications (i.e. no validation), ensuresthat manual specifications are only used by the MS in absence of othertechnologies.LOCATION TECHNOLOGY field 1100 e is preferably set with: “Manual”, or“Manual Validated”. Types of validations may further be elaborated. Theoriginator indicator is set to DLM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: null(not set).SPEED field 1100 h is preferably set with: null (not set).HEADING field 1100 i is preferably set with: null (not set).ELEVATION field 1100 j is preferably set with: null (not set).APPLICATION FIELDS field 1100 k is preferably set with: Same as wasdescribed for FIG. 2D (block 236) above; or as decided by the user.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

FIG. 9A depicts a table for illustrating heterogeneously locating a MS,for example a DLM 200. While many location methods and systems have beenexhausted above, there may be other system and methods for locating anMS which apply to the present disclosure. The requirement for LBX isthat the MS be located, regardless of how that occurs. MSs disclosedherein can be located by one or many location technologies discussed. AsMS prices move lower, and capabilities increase, an affordable MS willcontain multiple abilities for being located. GPS, triangulation,in-range detection, and contact sensory may all be used in locating aparticular MS as it travels. Equipping the MS with all techniques isstraightforward and is compelling when there are competing, orcomplementary, technologies that the MS should participate in.

The FIG. 9A table has DLM location methods for rows and a single columnfor the MS (e.g. DLM 200). Each location technology can be driven by theclient (i.e. the MS), or a service (i.e. the location server(s)) asdenoted by a row qualifier “C” for client or “S” for service. An MS maybe located by many technologies. The table illustrated shows that the MSwith unique identifier 0A12:43EF:985B:012F is able to be heterogeneouslylocated, specifically with local MS GPS capability, service side celltower in-range detection, service side cell tower TDOA, service sidecell tower MPT (combination of TDOA and AOA), service side antennain-range detection, service side antenna AOA, service side antenna TDOA,service side antenna MPT, service side contact/sensory, and generalservice side MPT. The unique identifier in this example is a universalproduct identifier (like Host Bus Adapter (HBA) World Wide Name (WWN)identifiers are generated), but could be in other form as describedabove (e.g. phone #214-403-4071). An MS can have any subset oftechnologies used to locate it, or all of the technologies used tolocate it at some time during its travels. An MS is heterogeneouslylocated when two or more location technologies are used to locate the MSduring MS travels and/or when two or more location technologies withincomplete results are used in conjunction with each other to locate theMS during MS travels, such as MPT. MPT is a heterogeneous locationtechnology because it uses at least two different methods to accomplisha single location determination. Using combinations of differentlocation technologies can be used, for example a TDOA measurement froman in-range antenna with a TDOA measurement relative a cell tower (e.g.as accomplished in MS processing of FIG. 26B), using completelydifferent services that have no knowledge of each other. Anothercombination is to use a synergy of whereabouts data from one technologywith whereabouts data from another technology. For example, in-rangedetection is used in combination with graphical identification toprovide better whereabouts of a MS. In another example, a GPS equippedMS travels to an area where GPS does not work well (e.g. downtown amidstlarge and tall buildings). The DLM becomes an ILM, and is triangulatedrelative other MSs. So, an MS is heterogeneously located using two ormore technologies to determine a single whereabouts, or differentwhereabouts of the MS during travel.

FIG. 9B depicts a flowchart for describing a preferred embodiment ofheterogeneously locating a MS, for example DLM 200. Whileheterogeneously locating an MS can occur by locating the MS at differenttimes using different location technologies, flowchart 9B is shown todiscuss a generalization of using different location technologies witheach other at the same time to locate an MS. Processing begins at block950 and continues to block 952 where a plurality of parameters from morethan one location technology are examined for locating an MS. Processingbegins at block 950 by a service (or the MS) when a location technologyby itself cannot be used to confidently locate the MS. Data deemeduseful at block 952, when used in conjunction with data from a differentlocation technology to confidently locate the MS, is passed forprocessing to block 954. Block 954 heterogeneously locates the MS usingdata from at least two location technologies to complement each otherand to be used in conjunction with each other in order to confidentlylocate the MS. Once the MS whereabouts are determined at block 954, WDRinformation is communicated to the MS for further processing at block956. In some embodiments where a service is heterogeneously locating theMS, block 956 communicates WDR information wirelessly to the MS beforeprocessing begins at block 958. In another embodiment where the MS isheterogeneously locating itself, block 956 communicates WDR informationinternally to WDR completion processing at block 958. In preferredembodiments, the MS completes its WDR information at block 958, FIG. 2Fparameters are prepared at block 960, and the MS invokes FIG. 2Fprocessing already described above (at block 962), before processingterminates at block 964. Parameters set at block 960 are: WDRREF=areference or pointer to the MS WDR; DELETEQ=FIG. 9B location queuediscard processing; and SUPER=FIG. 9B supervisory notificationprocessing. WDR 1100 fields (see FIG. 11A) are set analogously in lightof many variations already described above.

In some embodiments of FIG. 9B processing, Missing Part Triangulation(MPT) is used to heterogeneously locate an MS. For a service sideembodiment example, block 950 begins service processing when TDOAinformation itself cannot be used to confidently locate the MS, or AOAinformation itself cannot be used to confidently locate the MS, howeverusing angles and distances from each in conjunction with each otherenables solving whereabouts confidently. See “Missing Part Triangulation(MPT)” section below with discussions for FIGS. 11A through 11E for MPTprocessing of blocks 952 and 954. Data discovered at block 952 andprocessed by block 954 depends on the embodiment, what stationaryreference point locations are known at the time of blocks 952 and 954processing, and which parts are missing for triangulating the MS. Havingthree (3) sides (all TDOA) with known stationary vertices location(s)solves the triangle for locating the MS. Three (3) angles (all AOA) withknown stationary vertices location(s) solves the triangle for locatingthe MS. Those skilled in the art appreciate that solving triangulationcan make complementary use of different distances (time used todetermine length in TDOA) and angles (from AOA) for deducing a MSlocation confidently (e.g. MPT). Those skilled in the art recognize thathaving stationary reference locations facilitates requiring lesstriangular information for deducing a MS location confidently.

While MPT has been discussed by example, flowchart 9B is not to beinterpreted in a limiting sense. Any location technologies, for exampleas shown in FIG. 9A, can be used in conjunction with each other when notall information required is available in a single location technology toconfidently deduce an MS location. Data available from the differentlocation technologies available will be examined on its own merits, andoptionally used in conjunction to deduce a confident location. Forexample, a TDOA (difference between when signal sent and when received)measurement from “coming within range” technology can be used todistinguish how close, or how far, is an MS in the vicinity. Thatmeasurement may be used to more confidently locate the MS using otherTDOA measurements from other unrelated “coming within range” whereaboutsinformation.

With the many DLM examples above, it should be clear now to the readerhow to set the WDR 1100 for DLM invoked FIG. 2F processing. There can beother location technologies that will set WDR 1100 fields analogously.Locating methodologies of FIGS. 2A through 9B can be used in anycombination, for example for more timely or accurate locating.Furthermore, a MS automatically takes on a role of a DLM or ILMdepending on what capability is available at the time, regardless ofwhether or not the MS is equipped for being directly located. As a DLMroams to unsupported areas, it can remain a DLM using different DLMtechnologies, and it can become an ILM to depend on other MSs (ILMs orDLMs) in the vicinity to locate it.

LBX Indirectly Located Mobile Data Processing Systems (ILMs)

FIGS. 10A and 10B depict an illustration of a Locatable Network expanse(LN-Expanse) 1002 for describing locating of an ILM with all DLMs. Withreference now to FIG. 10A, DLM 200 a, DLM 200 b, DLM 200 c, DLM 200 d,and DLM 200 e (referred to generally in FIGS. 10A and 10B discussions asDLMs 200) are each automatically and directly located, for example usingany of the automatic location technologies heretofore described. ILM1000 b is automatically located using the reference locations of DLM 200b, DLM 200 c, and DLM 200 e. DLMs 200 can be mobile while providingreference locations for automatically determining the location of ILM1000 b. Timely communications between MSs is all that is required forindirectly locating MSs. In some embodiments, DLMs 200 are used totriangulate the position of ILM 1000 b using aforementioned wavespectrum(s) reasonable for the MSs. Different triangulation embodimentscan triangulate the location of ILM 1000 b using TDOA, AOA, or MPT,preferably by the ILM 1000 b seeking to be located. In otherembodiments, TDOA information is used to determine how close ILM 1000 bis to a DLM for associating the ILM at the same location of a DLM, butwith how close nearby. In other embodiments, an ILM is located by simplybeing in communications range to another MS. DLMs 200 can be referencedfor determining elevation of an ILM. The same automatic locationtechnologies used to locate a DLM can be used to automatically locate anILM, except the DLMs are mobile and serve as the reference points. It istherefore important that DLM locations be timely known when referencesare needed for locating ILMs. Timely ILM interactions with other MSs,and protocol considerations are discussed in architecture 1900 below.DLMs 200 b, 200 c, and 200 e are preferably selected for locating ILM1000 b by their WDR high confidence values, however any other WDR datamay be used whereby wave spectrum, channel signal strength, timeinformation, nearness, surrounded-ness, etc is considered for generatinga confidence field 1100 d of the WDR 1100 for the located ILM.Preferably, those considerations are factored into a confidence value,so that confidence values can be completely relied upon.

With reference now to FIG. 10B, ILM 1000 c has been located relative aplurality of DLMs, namely DLM 200 b, DLM 200 d, and DLM 200 e. ILM 1000c is located analogously to ILM 1000 b as described for FIG. 10A, exceptthere are different DLMs involved with doing the locating of ILM 1000 cbecause of a different location of ILM 1000 c. FIGS. 10A and 10Billustrate that MSs can be located using other MSs, rather than fixedstationary references described for FIGS. 2A through 9B. ILM 1000 b andILM 1000 c are indirectly located using DLMs 200.

FIG. 10C depicts an illustration of a Locatable Network expanse(LN-Expanse) 1002 for describing locating of an ILM with an ILM and DLM.ILM 1000 a is automatically located using the reference locations of DLM200 c, DLM 200 b, and ILM 1000 b. DLM 200 b, DLM 200 c and ILM 1000 bcan be mobile while providing reference locations for automaticallydetermining the location of ILM 1000 a. In some embodiments, MSs areused to triangulate the position of ILM 1000 a using any of theaforementioned wave spectrum(s) (e.g. WiFi 802.x, cellular radio, etc)reasonable for the MSs. Different triangulation embodiments cantriangulate the location of ILM 1000 a using TDOA, AOA, or MPT,preferably by the ILM 1000 a seeking to be located. In otherembodiments, TDOA information is used to determine how close ILM 1000 ais to a MS (DLM or ILM) for associating the ILM at the same location ofa MS, but with how close nearby. In other embodiments, an ILM is locatedby simply being in communications range to another MS. DLMs or ILMs canbe referenced for determining elevation of ILM 1000 a. The sameautomatic location technologies used to locate a MS (DLM or ILM) areused to automatically locate an ILM, except the MSs are mobile and serveas the reference points. It is therefore important that MS (ILM and/orDLM) locations be timely known when references are needed for locatingILMs. Timely ILM interactions with other MSs, and protocolconsiderations are discussed in architecture 1900 below. DLM 200 b, DLM200 c, and ILM 1000 b are preferably selected for locating ILM 1000 a bytheir WDR high confidence values, however any other WDR data may be usedwhereby wave spectrum, channel signal strength, time information,nearness, surrounded-ness, etc is considered for generating a confidencefield 1100 d of the WDR 1100 for the located ILM. Preferably, thoseconsiderations were already factored into a confidence value so thatconfidence values can be completely relied upon. ILM 1000 a isindirectly located using DLM(s) and ILM(s).

FIGS. 10D, 10E, and 10F depict an illustration of a Locatable Networkexpanse (LN-Expanse) 1002 describing locating of an ILM with all ILMs.With reference now to FIG. 10D, ILM 1000 e is automatically locatedusing the reference locations of ILM 1000 a, ILM 1000 b, and ILM 1000 c.ILM 1000 a, ILM 1000 b and ILM 1000 c can be mobile while providingreference locations for automatically determining the location of ILM1000 e. Timely communications between MSs is all that is required. Insome embodiments, MSs are used to triangulate the position of ILM 1000 eusing any of the aforementioned wave spectrum(s) reasonable for the MSs.Different triangulation embodiments can triangulate the location of ILM1000 e using TDOA, AOA, or MPT processing (relative ILMs 1000 a through1000 c), preferably by the ILM 1000 e seeking to be located. ILMs can bereferenced for determining elevation of ILM 1000 e. The same automaticlocation technologies used to locate a MS (DLM or ILM) are used toautomatically locate an ILM, except the MSs are mobile and serve as thereference points. It is therefore important that ILM locations be timelyknown when references are needed for locating ILMs. Timely ILMinteractions with other MSs, and protocol considerations are discussedin architecture 1900 below. ILM 1000 a, ILM 1000 b, and ILM 1000 c arepreferably selected for locating ILM 1000 e by their WDR high confidencevalues, however any other WDR data may be used whereby wave spectrum,channel signal strength, time information, nearness, surrounded-ness,etc is considered for generating a confidence field 1100 d of the WDR1100 for the located ILM. Preferably, those considerations were alreadyfactored into a confidence value so that confidence values can becompletely relied upon. ILM 1000 e is indirectly located using ILM 1000a, ILM 1000 b, and ILM 1000 c.

With reference now to FIG. 10E, ILM 1000 g is automatically locatedusing the reference locations of ILM 1000 a, ILM 1000 c, and ILM 1000 e.ILM 1000 a, ILM 1000 c and ILM 1000 e can be mobile while providingreference locations for automatically determining the location of ILM1000 g. ILM 1000 g is located analogously to ILM 1000 e as described forFIG. 10D, except there are different ILMs involved with doing thelocating of ILM 1000 g because of a different location of ILM 1000 g.Note that as ILMs are located in the LN-expanse 1002, the LN-expanseexpands with additionally located MSs.

With reference now to FIG. 10F, ILM 1000 i is automatically locatedusing the reference locations of ILM 1000 f, ILM 1000 g, and ILM 1000 h.ILM 1000 f, ILM 1000 g and ILM 1000 h can be mobile while providingreference locations for automatically determining the location of ILM1000 i. ILM 1000 i is located analogously to ILM 1000 e as described forFIG. 10D, except there are different ILMs involved with doing thelocating of ILM 1000 i because of a different location of ILM 1000 i.FIGS. 10D through 10F illustrate that an MS can be located using allILMs, rather than all DLMs (FIGS. 10A and 10B), a mixed set of DLMs andILMs (FIG. 10C), or fixed stationary references (FIGS. 2A through 9B).ILMs 1000 e, 1000 g, and 1000 i are indirectly located using ILMs. Notethat in the FIG. 10 illustrations the LN-expanse 1002 has expanded downand to the right from DLMs directly located up and to the left. Itshould also be noted that locating any MS can be done with at least oneother MS. Three are not required as illustrated. It is preferable thattriangulation references used surround an MS.

FIGS. 10G and 10H depict an illustration for describing the reach of aLocatable Network expanse (LN-Expanse) according to MSs. Locationconfidence will be dependent on the closest DLMs, how stale an MSlocation becomes for serving as a reference point, and how timely an MSrefreshes itself with a determined location. An MS preferably hashighest available processing speed with multithreaded capability in aplurality of hardware processors and/or processor cores. A substantiallylarge number of high speed concurrent threads of processing that canoccur within an MS provides for an optimal capability for being locatedquickly among its peer MSs, and for serving as a reference to its peerMSs. MS processing described in flowcharts herein assumes multiplethreads of processing with adequate speed to accomplish an optimal rangein expanding the LN-Expanse 1002.

With reference now to FIG. 10G, an analysis of an LN-Expanse 1002 willcontain at least one DLM region 1022 containing a plurality of DLMs, andat least one DLM indirectly located region 1024 containing at least oneILM that has been located with all DLMs. Depending on the range, orscope, of an LN-Expanse 1002, there may be a mixed region 1026containing at least one ILM that has been indirectly located by both anILM and DLM, and there may be an exclusive ILM region 1028 containing atleast one ILM that has been indirectly located by all ILMs. The furtherin distance the LN-Expanse has expanded from DLM region 1022 with asubstantial number of MSs, the more likely there will an exclusive ILMregion 1028. NTP may be available for use in some regions, or somesubset of a region, yet not available for use in others. NTP ispreferably used where available to minimize communications between MSs,and an MS and service(s). An MS has the ability to make use of NTP whenavailable.

With reference now to FIG. 10H, all MSs depicted know their ownlocations. The upper left-hand portion of the illustration consists ofregion 1022. As the reader glances more toward the rightmost bottomportion of the illustration, there can be regions 1024 and regions 1026in the middle of the illustration. At the very rightmost bottom portionof the illustration, remaining ILMs fall in region 1028. An ILM isindirectly located relative all DLMs, DLMs and ILMs, or all ILMs. An“Affirmifier” in a LN-expanse confidently knows its own location and canserve as a reference MS for other MSs. An affirmifier is said to“affirmify” when in the act of serving as a reference point to otherMSs. A “Pacifier” can contribute to locating other systems, but with alow confidence of its own whereabouts. The LN-Expanse is a network oflocated/locatable MSs, and is preferably expanded by a substantialnumber of affirmifiers.

FIG. 10I depicts an illustration of a Locatable Network expanse(LN-Expanse) for describing a supervisory service, for examplesupervisory service 1050. References in flowcharts for communicatinginformation to a supervisory service can refer to communicatinginformation to supervisory service 1050 (e.g. blocks 294 and 296 fromparameters passed to block 272 for many processing flows). The onlyrequirement is that supervisory service 1050 be contactable from an MS(DLM or ILM) that reports to it. An MS reporting to service 1050 cancommunicate directly to it, through another MS (i.e. a single hop), orthrough a plurality of MSs (i.e. a plurality of hops). Networks of MSscan be preconfigured, or dynamically reconfigured as MSs travel tominimize the number of hops between a reporting MS and service 1050. Apurely peer to peer preferred embodiment includes a peer to peer networkof located/locatable MSs that interact with each other as describedherein. The purely peer to peer preferred embodiment may have no need toinclude a service 1050. Nevertheless, a supervisory service may bewarranted to provide certain processing centralization, or for keepinginformation associated with MSs. In some embodiments, supervisoryservice 1050 includes at least one database to house data (e.g. data 8;data 20; data 36; data 38, queue data 22, 24, 26; and/or history 30) forany subset of MSs which communicate with it, for example to house MSwhereabouts information.

FIG. 11A depicts a preferred embodiment of a Whereabouts Data Record(WDR) 1100 for discussing operations of the present disclosure. A WDRtakes on a variety of formats depending on the context of use. There areseveral parts to a WDR depending on use. There is an identity sectionwhich contains a MS ID field 1100 a for identifying the WDR. Field 1100a can contain a null value if the WDR is for whereabouts informationreceived from a remote source which has not identified itself. MSs donot require identities of remote data processing systems in order to belocated. There is a core section which is required in WDR uses. The coresection includes date/time stamp field 1100 b, location field 1100 c,and confidence field 1100 d. There is a transport section of fieldswherein any one of the fields may be used when communicating WDRinformation between data processing systems. Transport fields includecorrelation field 1100 m, sent date/time stamp field 1100 n, andreceived date/time stamp field 1100 p. Transport fields may also becommunicated to send processing (e.g. queue 24), or received fromreceive processing (e.g. queue 26). Other fields are of use depending onthe MS or applications thereof, however location technology field 1100 eand location reference info field 1100 f are of particular interest incarrying out additional novel functionality of the present disclosure.Communications reference information field 1100 g may be valuable,depending on communications embodiments in the LN-expanse.

Some fields are multi-part fields (i.e. have sub-fields). WhereaboutsData Records (WDRs) 1100 may be fixed length records, varying lengthrecords, or a combination with field(s) in one form or the other. SomeWDR embodiments will use anticipated fixed length record positions forsubfields that can contain useful data, or a null value (e.g. −1). OtherWDR embodiments may use varying length fields depending on the number ofsub-fields to be populated. Other WDR embodiments will use varyinglength fields and/or sub-fields which have tags indicating theirpresence. Other WDR embodiments will define additional fields to preventputting more than one accessible data item in one field. In any case,processing will have means for knowing whether a value is present ornot, and for which field (or sub-field) it is present. Absence in datamay be indicated with a null indicator (−1), or indicated with its lackof being there (e.g. varying length record embodiments).

When a WDR is referenced in this disclosure, it is referenced in ageneral sense so that the contextually reasonable subset of the WDR ofFIG. 11A is used. For example, when communicating WDRs(sending/receiving data 1302 or 1312) between data processing systems, areasonable subset of WDR 1100 is communicated in preferred embodimentsas described with flowcharts. When a WDR is maintained to queue 22,preferably most (if not all) fields are set for a complete record,regardless if useful data is found in a particular field (e.g. somefields may be null (e.g. −1)). Most importantly, Whereabouts DataRecords (WDRs) are maintained to queue 22 for maintaining whereabouts ofthe MS which owns queue 22. LBX is most effective the more timely (andcontinuous) a MS has valid whereabouts locally maintained. WDRs aredesigned for maintaining whereabouts information independent of anylocation technology applied. Over time, a MS may encounter a pluralityof location technologies used to locate it. WDRs maintained to a firstMS queue 22 have the following purpose:

-   -   1) Maintain timely DLM whereabouts information of the first MS        independent of any location technology applied;    -   2) Maintain whereabouts information of nearby MSs independent of        any location technology applied;    -   3) Provide DLM whereabouts information to nearby MSs for        determining their own locations (e.g. provide whereabouts        information to at least a second MS for determining its own        location);    -   4) Maintain timely ILM whereabouts information of the first MS        independent of any location technology applied; and    -   5) Provide ILM whereabouts information to nearby MSs so they can        determine their own locations (e.g. first MS providing        whereabouts information to at least a second MS for the second        MS determining its own whereabouts).

A MS may go in and out of DLM or ILM roles as it is mobile. Directlocation methods are not always available to the MS as it roams,therefore the MS preferably does all of 1 through 5 above. When the WDR1100 contains a MS ID field 1100 a matching the MS which owns queue 22,that WDR contains the location (location field 1100 c) with a specifiedconfidence (field 1100 d) at a particular time (date/time stamp field1100 b) for that MS. Preferably the MS ID field 1100 a, date/time stampfield 1100 b and confidence field 1100 d is all that is required forsearching from the queue 22 the best possible, and most timely, MSwhereabouts at the time of searching queue 22. Other embodiments mayconsult any other fields to facilitate the best possible MS location atthe time of searching and/or processing queue 22. The WDR queue 22 alsomaintains affirmifier WDRs, and acceptable confidence pacifier WDRs(block 276), which are used to calculate a WDR having matching MS field1100 a so the MS knows its whereabouts via indirect location methods.Affirmifier and pacifier WDRs have MS ID field 1100 a values which donot match the MS owning queue 22. This distinguishes WDRs of queue 22for A) accessing the current MS location; from B) the WDRs from otherMSs. All WDR fields of affirmifier and pacifier originated WDRs are ofimportance for determining a best location of the MS which owns queue22, and in providing LBX functionality.

MS ID field 1100 a is a unique handle to an MS as previously described.Depending on the installation, MS ID field 1100 a may be a phone #,physical or logical address, name, machine identifier, serial number,encrypted identifier, concealable derivative of a MS identifier,correlation, pseudo MS ID, or some other unique handle to the MS. An MSmust be able to distinguish its own unique handle from other MS handlesin field 1100 a. For indirect location functionality disclosed herein,affirmifier and pacifier WDRs do not need to have a correct originatingMS ID field 1100 a. The MS ID may be null, or anything to distinguishWDRs for MS locations. However, to accomplish other LBX features andfunctionality, MS Identifiers (MS IDs) of nearby MSs (or uniquecorrelations thereof) maintained in queue 22 are to be known forprocessing by an MS. MS ID field 1100 a may contain a group identifierof MSs in some embodiments for distinguishing between types of MSs (e.g.to be treated the same, or targeted with communications, as a group), aslong as the MS containing queue 22 can distinguish its own originatedWDRs 1100. A defaulted value may also be set for a “do not care” setting(e.g. null).

Date/Time stamp field 1100 b contains a date/time stamp of when the WDRrecord 1100 was completed by an MS for its own whereabouts prior to WDRqueue insertion. It is in terms of the date/time scale of the MSinserting the local WDR (NTP derived or not). Date/Time stamp field 1100b may also contain a date/time stamp of when the WDR record 1100 wasdetermined for the whereabouts of an affirmifier or pacifier originatingrecord 1100 to help an MS determine its own whereabouts, but it shouldstill be in terms of the date/time scale of the MS inserting the localWDR (NTP derived or not) to prevent time conversions when needed, and topromote consistent queue 22 searches/sorts/etc. The date/time stampfield 1100 b should use the best possible granulation of time, and maybe in synch with other MSs and data processing systems according to NTP.A time zone, day/light savings time, and NTP indicator is preferablymaintained as part of field 1100 b. The NTP indicator (e.g. bit) is forwhether or not the date/time stamp is NTP derived (e.g. the NTP usesetting is checked for setting this bit when completing the WDR forqueue 22 insertion). In some embodiments, date/time stamp field 1100 bis measured in the same granulation of time units to an atomic clockavailable to MSs of an LN-Expanse 1002. When NTP is used in aLN-Expanse, identical time server sources are not a requirement providedNTP derived date/time stamps have similar accuracy and dependability.

Location field 1100 c depends on the installation of the presentdisclosure, but can include a latitude and longitude, cellular networkcell identifier, geocentric coordinates, geodetic coordinates, threedimensional space coordinates, area described by GPS coordinates,overlay grid region identifier or coordinates, GPS descriptors,altitude/elevation (e.g. in lieu of using field 1100 j), MAPSCOreference, physical or logical network address (including a wildcard(e.g. ip addresses 145.32.*.*)), particular address, polar coordinates,or any other two/three dimensional location methods/means used inidentifying the MS location. Data of field 1100 c is preferably aconsistent measure (e.g. all latitude and longitude) for all locationtechnologies that populate WDR queue 22. Some embodiments will permitusing different measures to location field 1100 c (e.g. latitude andlongitude for one, address for another; polar coordinates for another,etc) which will be translated to a consistent measure at appropriateprocessing times.

Confidence field 1100 d contains a value for the confidence thatlocation field 1100 c accurately describes the location of the MS whenthe WDR is originated by the MS for its own whereabouts. Confidencefield 1100 d contains a value for the confidence that location field1100 c accurately describes the location of an affirmifier or pacifierthat originated the WDR. A confidence value can be set according toknown timeliness of processing, communications and known mobilevariables (e.g. MS speed, heading, yaw, pitch, roll, etc) at the time oftransmission. Confidence values should be standardized for all locationtechnologies used to determine which location information is of ahigher/lower confidence when using multiple location technologies (asdetermined by fields 1100 e and 1100 f) for enabling determination ofwhich data is of a higher priority to use in determining whereabouts.Confidence value ranges depend on the implementation. In a preferredembodiment, confidence values range from 1 to 100 (as discussedpreviously) for denoting a percentage of confidence. 100% confidenceindicates the location field 1100 c is guaranteed to describe the MSlocation. 0% confidence indicates the location field 1100 c isguaranteed to not describe the MS location. Therefore, the lowestconceivable value of a queue 22 for field 1100 d should be 1.Preferably, there is a lowest acceptable confidence floor valueconfigured (by system, administrator, or user) as used at points ofqueue entry insertion—see block 276 to prevent frivolous data to queue22. In most cases, WDRs 1100 contain a confidence field 1100 d up to100. In confidence value preferred embodiments, pacifiers know theirlocation with a confidence of less than 75, and affirmifiers know theirlocation with a confidence value 75 or greater. The confidence field isskewed to lower values as the LN-expanse 1002 is expanded further fromregion 1022. Confidence values are typically lower when ILMs are used tolocate a first set of ILMs (i.e. first tier), and are then lower whenthe first set of ILMs are used to locate a second set of ILMs (secondtier), and then lower again when the second set of ILMs are used tolocate a third set of ILMs (third tier), and so on. Often, examinationof a confidence value in a WDR 1100 can indicate whether the MS is aDLM, or an ILM far away from DLMs, or an MS which has been located usingaccurate (high confidence) or inaccurate (low confidence) locatingtechniques.

Location Technology field 1100 e contains the location technology usedto determine the location of location field 1100 c. An MS can be locatedby many technologies. Location Technology field 1100 e can contain avalue from a row of FIG. 9A or any other location technology used tolocate a MS. WDRs inserted to queue 22 for MS whereabouts set field 1100e to the technology used to locate the MS. WDRs inserted to queue 22 forfacilitating a MS in determining whereabouts set field 1100 e to thetechnology used to locate the affirmifier or pacifier. Field 1100 e alsocontains an originator indicator (e.g. bit) for whether the originatorof the WDR 1100 was a DLM or ILM. When received from a service that hasnot provided confidence, this field may be used by a DLM to determineconfidence field 1100 d.

Location Reference Info field 1100 f preferably contains one or morefields useful to locate a MS in processing subsequent of having beeninserted to queue 22. In other embodiments, it contains data thatcontributed to confidence determination. Location Reference Info field1100 f may contain information (TDOA measurement and/or AOAmeasurement—see inserted field 1100 f for FIGS. 2D, 2E and 3C) useful tolocate a MS in the future when the WDR originated from the MS for itsown whereabouts. Field 1100 f will contain selected triangulationmeasurements, wave spectrum used and/or particular communicationsinterfaces 70, signal strength(s), TDOA information, AOA information, orany other data useful for location determination. Field 1100 f can alsocontain reference whereabouts information (FIG. 3C) to use relative aTDOA or AOA (otherwise WDR location field assumed as reference). In oneembodiment, field 1100 f contains the number of DLMs and ILMs whichcontributed to calculating the MS location to break a tie between usingWDRs with the same confidence values. In another embodiment, a tier ofILMs used to locate the MS is maintained so there is an accounting forthe number of ILMs in the LN-expanse between the currently located MSand a DLM. In other embodiments, MS heading, yaw, pitch and roll, oraccelerometer values are maintained therein, for example for antenna AOApositioning. When wave spectrum frequencies or other wavecharacteristics have changed in a transmission used for calculating aTDOA measurement, appropriate information may be carried along, forexample to properly convert a time into a distance. Field 1100 f shouldbe used to facilitate correct measurements and uses, if neededconversions have not already taken place.

Communications reference information field 1100 g is a multipart recorddescribing the communications session, channel, and bind criteriabetween the MS and MSs, or service(s), that helped determine itslocation. In some embodiments, field 1100 g contains unique MSidentifiers, protocol used, logon/access parameters, and usefulstatistics of the MSs which contributed to data of the location field1100 c. An MS may use field 1100 g for WDRs originated from affirmifiersand pacifiers for subsequent LBX processing.

Speed field 1100 h contains a value for the MS speed when the WDR isoriginated by the MS for its own whereabouts. Speed field 1100 d maycontain a value for speed of an affirmifier or pacifier when the WDR wasoriginated elsewhere. Speed is maintained in any suitable units.

Heading field 1100 i contains a value for the MS heading when the WDR isoriginated by the MS for its own whereabouts. Heading field 1100 i maycontain a value for heading of an affirmifier or pacifier when the WDRwas originated elsewhere. Heading values are preferably maintained indegrees up to 360 from due North, but is maintained in any suitabledirectional form.

Elevation field 1100 j contains a value for the MS elevation (oraltitude) when the WDR is originated by the MS for its own whereabouts.Elevation field 1100 j may contain a value for elevation (altitude) ofan affirmifier or pacifier when the WDR was originated elsewhere.Elevation (or altitude) is maintained in any suitable units.

Application fields 1100 k contains one or more fields for describingapplication(s) at the time of completing, or originating, the WDR 1100.Application fields 1100 k may include field(s) for:

-   -   a) MS Application(s) in use at time;    -   b) MS Application(s) context(s) in use at time;    -   c) MS Application(s) data for state information of MS        Application(s) in use at time;    -   d) MS Application which caused WDR 1100;    -   e) MS Application context which caused WDR 1100;    -   f) MS Application data for state information of MS Application        which caused WDR 1100;    -   g) Application(s) in use at time of remote MS(s) involved with        WDR;    -   h) Application(s) context(s) in use at time of remote MS(s)        involved with WDR;    -   i) MS Application(s) data for state information of remote MS(s)        involved with WDR;    -   j) Remote MS(s) criteria which caused WDR 1100;    -   k) Remote MS(s) context criteria which caused WDR 1100;    -   l) Remote MS(s) data criteria which caused WDR 1100;    -   m) Application(s) in use at time of service(s) involved with        WDR;    -   n) Application(s) context(s) in use at time of service(s)        involved with WDR;    -   o) MS Application(s) data for state information of service(s)        involved with WDR;    -   p) Service(s) criteria which caused WDR 1100;    -   q) Service(s) context criteria which caused WDR 1100;    -   r) Service(s) data criteria which caused WDR 1100;    -   s) MS navigation APIs in use;    -   t) Web site identifying information;    -   u) Physical or logical address identifying information;    -   v) Situational location information as described in U.S. Pat.        Nos. 6,456,234; 6,731,238; 7,187,997 (Johnson);    -   w) Transactions completed at a MS;    -   x) User configurations made at a MS;    -   y) Environmental conditions of a MS;    -   z) Application(s) conditions of a MS;    -   aa) Service(s) conditions of a MS;    -   bb) Date/time stamps (like field 1100 b) with, or for, any item        of a) through aa); and/or    -   cc) Any combinations of a) through bb).

Correlation field 1100 m is optionally present in a WDR when the WDR isin a transmission between systems (e.g. wireless communications) such asin data 1302 or 1312. Field 1100 m provides means for correlating aresponse to an earlier request, or to correlate a response to an earlierbroadcast. Correlation field 1100 m contains a unique handle. In aLN-expanse which globally uses NTP, there is no need for correlation indata 1302 or 1312. Correlation field 1100 m may be present in WDRs ofqueues 24 or 26. Alternatively, a MS ID is used for correlation.

Sent date/time stamp field 1100 n is optionally present in a WDR whenthe WDR is in transmission between systems (e.g. wirelesscommunications) such as in data 1302 or 1312. Field 1100 n contains whenthe WDR was transmitted. A time zone, day/light savings time, and NTPindicator is preferably maintained as part of field 1100 n. Field 1100 nis preferably not present in WDRs of queue 22 (but can be if TDOAmeasurement calculation is delayed to a later time). In someembodiments, there is no need for field 1100 n. Whereabouts determinedfor MSs of an LN-Expanse may be reasonably timely, facilitatingsimplicity of setting outbound field 1100 b to the transmissiondate/time stamp at the sending data processing system, rather than whenthe WDR was originally completed for whereabouts (e.g. whensubstantially the same time anyway). Sent date/time field 1100 n may bepresent in WDRs of queues 24 or 26.

Received date/time stamp field 1100 p is preferably present in a WDRwhen inserted to queue 26 by receiving thread(s) upon received data 1302or 1312. Field 1100 p contains when the WDR was received by the MS. Atime zone, day/light savings time, and NTP indicator is preferablymaintained as part of field 1100 p. Field 1100 p is preferably notpresent in WDRs of queue 22 (but can be if TDOA measurement calculationis delayed to a later time). In some embodiments, there is no need forfield 1100 p. For example, thread(s) 1912 may be listening directly onapplicable channel(s) and can determine when the data is received. Inanother embodiment, thread(s) 1912 process fast enough to determine thedate/time stamp of when data 1302 or 1312 is received since minimal timehas elapsed between receiving the signal and determining when received.In fact, known processing duration between when received and whendetermined to be received can be used to correctly alter a receiveddate/time stamp. Received date/time stamp field 1100 p is preferablyadded to records placed to queue 26 by receiving thread(s) feeding queue26.

Any fields of WDR 1100 which contain an unpredictable number ofsubordinate fields of data preferably use a tagged data scheme, forexample an X.409 encoding for a Token, Length, and Value (called a TLVencoding). Therefore, a WDR 1100, or field therein, can be a variablesized record. For example, Location Reference info field 1100 f maycontain TTA, 8, 0.1456 where the Token=“TTA” for Time Till Arrival (TDOAmeasurement between when sent and when received), Length=8 for 8 bytesto follow, and Value=0.1456 in time units contained within the 8 bytes;also SS, 4, 50 where Token=“Signal Strength”, 4=4 for 4 bytes to follow,and Value=50 dBu for the signal strength measurement. This allowson-the-fly parsing of unpredictable, but interpretable, multipartfields. The TLV encoding also enables-on-the-fly configuration forparsing new subordinate fields to any WDR 1100 field in a genericimplementation, for example in providing parse rules to a Lex and Yaccimplementation, or providing parse rules to a generic top down recursiveTLV encoding parser and processor.

Any field of WDR 1100 may be converted: a) prior to insertion to queue22; or b) after access to queue 22; or c) by queue 22 interfaceprocessing; for standardized processing. Any field of WDR 1100 may beconverted when sending/receiving/broadcasting, or related processing, toensure a standard format. Other embodiments will store and access valuesof WDR 1100 field(s) which are already in a standardized format. WDR1100 fields can be in any order, and a different order when comparingwhat is in data transmitted versus data maintained to queue 22.

An alternate embodiment to WDRs maintained to queue 22 preservestransport fields 1100 m, 1100 n and/or 1100 p, for example for use onqueue 22. This would enable 1952 thread(s) to perform TDOA measurementsthat are otherwise calculated in advance and kept in field 1100 f.However, queue 22 size should be minimized and the preferred embodimentuses transport fields when appropriate to avoid carrying them along toother processing.

FIGS. 11B, 11C and 11D depict an illustration for describing variousembodiments for determining the whereabouts of an MS, for example an ILM1000 e. With reference now to FIG. 11B, a MS 1000 e location is locatedby using locations of three (3) other MSs: MS₄, MS₅, and MS₆ (referredto generally as MS_(j)). MS_(j) are preferably located with a reasonablyhigh level of confidence. In some embodiments, MS_(j) are all DLMs. Insome embodiments, MS_(j) are all ILMs. In some embodiments, MS_(j) aremixed DLMs and ILMs. Any of the MSs may be mobile during locating of MS1000 e. Wave spectrums in use, rates of data communications and MSprocessing speed, along with timeliness of processing described below,provide timely calculations for providing whereabouts of ILM 1000 e witha high level of confidence. The most confident MSs (MS_(j)) were used todetermine the MS 1000 e whereabouts. For example, MS_(j) were alllocated using a form of GPS, which in turn was used to triangulate thewhereabouts of MS 1000 e. In another example, MS₄ was located by a formof triangulation technology, MS₅ was located by a form of “coming intorange” technology, and MS₆ was located by either of the previous two, orsome other location technology. It is not important how an MS islocated. It is important that each MS know its own whereabouts andmaintain a reasonable confidence to it, so that other MSs seeking to belocated can be located relative highest confidence locations available.The WDR queue 22 should always contain at least one entry indicating thelocation of the MS 2 which owns WDR queue 22. If there are no entriescontained on WDR queue 22, the MS 2 does not know its own location.

With reference now to FIG. 11C, a triangulation of MS 1000 e at location1102 is explained using location (whereabouts) 1106 of MS₄, location(whereabouts) 1110 of MS₅, and location (whereabouts) 1114 of MS₆.Signal transmission distance from MS_(j) locations are represented bythe radiuses, with r₁ the TDOA measurement (time difference between whensent and when received) between MS₄ and MS 1000 e, with r₂ the TDOAmeasurement (time difference between when sent and when received)between MS₅ and MS 1000 e, with r₃ the TDOA measurement (time differencebetween when sent and when received) between MS₆ and MS 1000 e. In thisexample, the known locations of MS_(j) which are used to determine thelocation of MS 1000 e allow triangulating the MS 1000 e whereaboutsusing the TDOA measurements. In fact, less triangular data in theillustration can be necessary for determining a highly confidentwhereabouts of MS 1000 e.

With reference now to FIG. 11D, a triangulation of MS 1000 e at location1102 is explained using location (whereabouts) 1106 of MS₄, location(whereabouts) 1110 of MS₅, and location (whereabouts) 1114 of MS₆. Insome embodiments, AOA measurements taken at a positioned antenna of MS1000 e at location 1102 are used relative the whereabouts 1106,whereabouts 1110, whereabouts 1114 (AOA 1140, AOA 1144 and AOA 1142),wherein AOA measurements are detected for incoming signals during knownvalues for MS heading 1138 with MS yaw, pitch, and roll (oraccelerometer readings). AOA triangulation is well known in the art.Line segment 1132 represents the direction of signal arrival to theantenna at whereabouts 1102 from MS₄ at whereabouts 1106. Line segment1134 represents the direction of signal arrival to the antenna atwhereabouts 1102 from MS₅ at whereabouts 1110. Line segment 1136represents the direction of signal arrival to the antenna at whereabouts1102 from MS₆ at whereabouts 1114. In this example, the known locationsof MS_(j) which are used to determine the location of MS 1000 e allowtriangulating the MS 1000 e whereabouts using the AOA measurements. Infact, less triangular data in the illustration can be necessary fordetermining a highly confident whereabouts of MS 1000 e. Alternativeembodiments will use AOA measurements of outbound signals from the MS atwhereabouts 1102 detected at antennas of whereabouts 1106 and/or 1110and/or 1114.

Missing Part Triangulation (MPT)

FIGS. 11C and 11D illustrations can be used in a complementary mannerwhen only one or two TDOA measurements are available and/or not allstationary locations, or MS reference locations, are known at the timeof calculation. Another example is when only one or two AOA angles isavailable and/or not all stationary locations, or MS referencelocations, are known at the time of calculation. However, using what isavailable from each technology in conjunction with each other allowssolving the MS whereabouts (e.g. blocks 952/954 processing above). MPTis one example of solving for missing parts using more than one locationtechnology. Condition of data known for locating a MS (e.g. whereabouts1106, 1110 and 1114) may be the following:

-   -   1) AAS=two angles and a side;    -   2) ASA=two angles and a common side;    -   3) SAS=two sides and the included angle; or    -   4) SSA=two sides and a non-included angle.        TDOA measurements are distances (e.g. time difference between        when sent and when received), and AOA measurements are angles.        Each of the four conditions are recognized (e.g. block 952        above), and data is passed for each of the four conditions for        processing (e.g. block 954 above). For AAS (#1) and ASA (#2),        processing (e.g. block 954) finds the third angle by subtracting        the sum of the two known angles from 180 degrees (i.e. using        mathematical law that triangles' interior angles add up to 180        degrees), and uses the mathematical law of Sines (i.e. a/sin        A=b/sin B=c/sin C) twice to find the second and third sides        after plugging in the knowns and solving for the unknowns. For        SAS (#3), processing (e.g. block 954) uses the mathematical law        of Cosines (i.e. a²=b²+c²−2bc cos A) to find the third side, and        uses the mathematical law of Sines (sin A/a=sin B/b=sin C/c        (derived from law of Sines above)) to find the second angle. For        SSA (#4), processing (e.g. block 954) uses the mathematical law        of Sines (i.e. (sin A/a=sin B/b=sin C/c) twice to get the second        angle, and mathematical law of Sines (a/sin A=b/sin B=c/sin C)        to get the third side. Those skilled in the art recognize other        useful trigonometric functions and formulas, and similar uses of        the same trigonometric functions, for MPT depending on what data        is known. The data discovered and processed depends on an        embodiment, what reference locations are available, and which        parts are missing for MPT. MPT uses different distances (time        used to determine length in TDOA) and/or angles (from AOA or        TDOA technologies) for deducing a MS location confidently (e.g.        MPT). Those skilled in the art recognize that having known        reference locations facilitates requiring less triangular        information for deducing a MS location confidently. MPT        embodiments may exist for any aforementioned wave spectrums.

FIG. 11E depicts an illustration for describing various embodiments forautomatically determining the location of an MS. An MS can be locatedrelative other MSs which were located using any of a variety of locationtechnologies, for example any of those of FIG. 9A. An MS isheterogeneously located when one of the following conditions are met:

-   -   More than one location technology is used during travel of the        MS;    -   More than one location technology is used to determine a single        whereabouts of the MS;    -   MPT is used to locate the MS; and/or    -   ADLT is used to locate the MS.        The WDR queue 22 and interactions between MSs as described below        cause the MS to be heterogeneously located without special        consideration to any particular location technology. While WDR        1100 contains field 1100 e, field 1100 d provides a standard and        generic measurement for evaluating WDRs from different location        technologies, without concern for the location technology used.        The highest confidence entries to a WDR queue 22 are used        regardless of which location technology contributed to the WDR        queue 22.

LBX Configuration

FIG. 12 depicts a flowchart for describing an embodiment of MSinitialization processing. Depending on the MS, there are manyembodiments of processing when the MS is powered on, started, restarted,rebooted, activated, enabled, or the like. FIG. 12 describes the blocksof processing relevant to the present disclosure as part of thatinitialization processing. It is recommended to first understanddiscussions of FIG. 19 for knowing threads involved, and variablesthereof. Initialization processing starts at block 1202 and continues toblock 1204 where the MS Basic Input Output System (BIOS) is initializedappropriately, then to block 1206 where other character 32 processing isinitialized, and then to block 1208 to see if NTP is enabled for thisMS. Block 1206 may start the preferred number of listen/receive threadsfor feeding queue 26 and the preferred number of send threads forsending data inserted to queue 24, in particular when transmitting CK1304 embedded in usual data 1302 and receiving CK 1304 or 1314 embeddedin usual data 1302 or 1312, respectively. The number of threads startedshould be optimal for parallel processing across applicable channel(s).In this case, other character 32 threads are appropriately altered forembedded CK processing (sending at first opportune outboundtransmission; receiving in usual inbound transmission).

If block 1208 determines NTP is enabled (as defaulted or last set by auser (i.e. persistent variable)), then block 1210 initializes NTPappropriately and processing continues to block 1212. If block 1208determines NTP was not enabled, then processing continues to block 1212.Block 1210 embodiments are well known in the art of NTP implementations(also see block 1626). Block 1210 may cause the starting of thread(s)associated with NTP. In some embodiments, NTP use is assumed in the MS.In other embodiments, appropriate NTP use is not available to the MS.Depending on the NTP embodiment, thread(s) may pull time synchronizationinformation, or may listen for and receive pushed time information.Resources 38 (or other MS local resource) provides interface to an MSclock for referencing, maintaining, and generating date/time stamps atthe MS. After block 1210 processing, the MS clock is synchronized toNTP. Because of initialization of the MS in FIG. 12, block 1210 may relyon a connected service to initially get the startup synchronized NTPdate/time. MS NTP processing will ensure the NTP enabled/disabledvariable is dynamically set as is appropriate (using semaphore access)because an MS may not have continuous clock source access during travelwhen needed for resynchronization. If the MS does not have access to aclock source when needed, the NTP use variable is disabled. When the MShas (or again gets) access to a needed clock source, then the NTP usevariable is enabled.

Thereafter, block 1212 creates shared memory to maintain data sharedbetween processes/threads, block 1214 initializes persistent data toshared memory, block 1216 initializes any non-persistent data to sharedmemory (e.g. some statistics 14), block 1218 creates system queues, andblock 1220 creates semaphore(s) used to ensure synchronous access byconcurrent threads to data in shared memory, before continuing to block1222. Shared memory data accesses appropriately utilize semaphore lockwindows (semaphore(s) created at block 1220) for proper access. In oneembodiment, block 1220 creates a single semaphore for all shared memoryaccesses, but this can deteriorate performance of threads accessingunrelated data. In the preferred embodiment, there is a semaphore foreach reasonable set of data of shared memory so all threads are fullyexecuting whenever possible. Persistent data is that data whichmaintains values during no power, for example as stored to persistentstorage 60. This may include data 8 (including permissions 10, charters12, statistics 14, service directory 16), data 20, LBX history 30, data36, resources 38, and/or other data. Persistent data preferably includesat least the DLMV (see DLM role(s) list Variable below), ILMV (see ILMrole(s) list Variable below), process variables 19 xx-Max values (19xx=1902, 1912, 1922, 1932, 1942 and 1952 (see FIG. 19 discussionsbelow)) for the last configured maximum number of threads to run in therespective process, process variables 19 xx-PID values (19 xx=1902,1912, 1922, 1932, 1942 and 1952 (see FIG. 19 discussions below)) formulti-purpose of: a) holding an Operating System Process Identifier(i.e. O/S PID) for a process started; and b) whether or not therespective process was last enabled (i.e. PID>0) or disabled (i.e.PID<=0), the confidence floor value (see FIG. 14A), the WTV (seeWhereabouts Timeliness Variable (see FIG. 14A)), the NTP use variable(see FIG. 14A) for whether or not NTP was last set to disabled orenabled (used at block 1208), and the Source Periodicity Time Period(SPTP) value (see FIG. 14B). There are reasonable defaults for each ofthe persistent data prior to the first use of MS 2 (e.g. NTP use isdisabled, and only becomes enabled upon a successful enabling of NTP atleast one time). Non-persistent data may include data involved in someregard to data 8 (and subsets of permissions 10, charters 12, statistics14, service directory 16), data 20, LBX history 30, data 36, resources38, queues, semaphores, etc. Block 1218 creates queues 22, 24, and 26.Queues 1980 and 1990 are also created there if required. Queues 1980 and1990 are not required when NTP is in use globally by participating dataprocessing systems. Alternate embodiments may use less queues by threadssharing a queue and having a queue entry type field for directing thequeue entry to the correct thread. Alternate embodiments may haveadditional queues for segregating entries of a queue disclosed for bestpossible performance. Other embodiments incorporate queues figurativelyto facilitate explanation of interfaces between processing.

All queues disclosed herein are understood to have their own internallymaintained semaphore for queue accesses so that queue insertion,peeking, accessing, etc uses the internally maintained semaphore toensure two or more concurrently executing threads do not corrupt ormisuse data to any queue. This is consistent with most operating systemqueue interfaces wherein a thread stays blocked (preempted) afterrequesting a queue entry until a queue entry appears in the queue. Also,no threads will collide with another thread when inserting, peeking, orotherwise accessing the same queue. Therefore, queues are implicitlysemaphore protected. Other embodiments may use an explicit semaphoreprotected window around queue data accessing, in which case thosesemaphore(s) are created at block 1220.

Thereafter, block 1222 checks for any ILM roles currently enabled forthe MS (for example as determined from persistent storage of an ILMrole(s) list Variable (ILMV) preferably preconfigured for the MS atfirst use, or configured as last configured by a user of the MS). ILMroles are maintained to the ILM role(s) list Variable (ILMV). The ILMVcontains one or more entries for an ILM capability (role), each entrywith a flag indicating whether it is enabled or disabled(marked=enabled, unmarked=disabled). If block 1222 determines there isat least one ILM role enabled (i.e. as marked by associated flag), thenblock 1224 artificially sets the corresponding 19 xx-PID variables to avalue greater than 0 for indicating the process(es) are enabled, and areto be started by subsequent FIG. 12 initialization processing. The 19xx-PID will be replaced with the correct Process Identifier (PID) uponexit from block 1232 after the process is started. Preferably, every MScan have ILM capability. However, a user may want to (configure) ensurea DLM has no ILM capability enabled (e.g. or having no list present). Insome embodiments, by default, every MS has an unmarked list of ILMcapability maintained to the ILMV for 1) USE DLM REFERENCES and 2) USEILM REFERENCES. USE DLM REFERENCES, when enabled (marked) in the ILMV,indicates to allow the MS of FIG. 12 processing to determine itswhereabouts relative remote DLMs. USE ILM REFERENCES, when enabled(marked) in the ILMV, indicates to allow the MS of FIG. 12 processing todetermine its whereabouts relative remote ILMs. Having both list itemsmarked indicates to allow determining MS whereabouts relative mixed DLMsand ILMs. An alternative embodiment may include a USE MIXED REFERENCESoption for controlling the MS of FIG. 12 processing to determine itswhereabouts relative mixed DLMs and/or ILMs. Alternative embodimentswill enforce any subset of these options without exposing userconfigurations, for example on a MS without any means for being directlylocated.

For any of the ILMV roles of USE DLM REFERENCES, USE ILM REFERENCES, orboth, all processes 1902, 1912, 1922, 1932, 1942 and 1952 are preferablystarted (i.e. 1902-PID, 1912-PID, 1922-PID, 1932-PID, 1942-PID and1952-PID are artificially set at block 1224 to cause subsequent processstartup at block 1232). Characteristics of an anticipated LN-expanse(e.g. anticipated location technologies of participating MSs, MScapabilities, etc) will start a reasonable subset of those processeswith at least process 1912 started. Block 1224 continues to block 1226.If block 1222 determines there are no ILMV role(s) enabled, then blockprocessing continues to block 1226.

Block 1226 initializes an enumerated process name array for convenientprocessing reference of associated process specific variables describedin FIG. 19, and continues to block 1228 where the first member of theset is accessed for subsequent processing. The enumerated set of processnames has a prescribed start order for MS architecture 1900. Thereafter,if block 1230 determines the process identifier (i.e. 19 xx-PID suchthat 19 xx is 1902, 1912, 1922, 1932, 1942, 1952 in a loop iteration ofblocks 1228 through 1234) is greater than 0 (e.g. this first iterationof 1952-PID>0 implies it is to be started here; also implies process1952 is enabled as used in FIGS. 14A, 28, 29A and 29B), then block 1232spawns (starts) the process (e.g. 1952) of FIG. 29A to start executionof subordinate worker thread(s) (e.g. process 1952 thread(s)) and savesthe real PID (Process Identifier) to the PID variable (e.g. 1952-PID)returned by the operating system process spawn interface. Block 1232passes as a parameter to the process of FIG. 29A which process name tostart (e.g. 1952), and continues to block 1234. If block 1230 determinesthe current process PID variable (e.g. 1952-PID) is not greater than 0(i.e. not to be started; also implies is disabled as used in FIGS. 14A,28, 29A and 29B), then processing continues to block 1234. Block 1234checks to see if all process names of the enumerated set (pattern of 19xx) have been processed (iterated) by blocks 1228 through 1234. If block1234 determines that not all process names in the set have beenprocessed (iterated), then processing continues back to block 1228 forhandling the next process name in the set. If block 1234 determines thatall process names of the enumerated set were processed, then block 1236checks the DLMV (DLM role(s) list Variable). Blocks 1228 through 1234iterate every process name of FIG. 19 to make sure that each is startedin accordance with non-zero 19 xx-PID variable values at FIG. 12initialization. Block 1236 checks for any DLM roles currently enabledfor the MS (for example as determined from persistent storage of a DLMrole(s) list Variable (DLMV) preferably preconfigured for the MS atfirst use if the MS contains DLM capability). DLM capability (roles),whether on-board at the MS, or determined during MS travels (see block288), is maintained to the DLM role(s) list Variable (DLMV). The DLMVcontains one or more entries for a DLM capability (role), each (role)entry with a flag indicating whether it is enabled or disabled(marked=enabled, unmarked=disabled). If block 1236 determines there isat least one DLM role enabled (i.e. as marked by associated flag), thenblock 1238 initializes enabled role(s) appropriately and processingcontinues to block 1240. Block 1238 may cause the starting of thread(s)associated with enabled DLM role(s), for DLM processing above (e.g.FIGS. 2A through 9B). Block 1238 may invoke API(s), enable flag(s), orinitialize as is appropriate for DLM processing described above. Suchinitializations are well known in the art of prior art DLM capabilitiesdescribed above. If block 1236 determines there are no DLM roles toinitialize at the MS, then processing continues to block 1240. Any ofthe FIG. 9A technologies are eligible in the DLMV as determined to bepresent at the MS and/or as determined by historical contents of the WDRqueue 22 (e.g. location technology field 1100 e with MS ID field 1100 afor this MS) and/or determined by LBX history 30. ApplicationProgramming Interfaces (APIs) may also be used to determine MS DLMcapability (role(s)) for entry(s) to the DLMV.

Block 1240 completes LBX character initialization, and FIG. 12initialization processing terminates thereafter at block 1242. Dependingon what threads were started as part of block 1206, Block 1240 maystartup the preferred number of listen/receive threads for feeding queue26 and the preferred number of send threads for sending data inserted toqueue 24, in particular when transmitting new data 1302 and receivingnew data 1302 or 1312. The number of threads started should be optimalfor parallel processing across applicable channel(s). Upon encounter ofblock 1242, the MS is appropriately operational, and a user at the MS ofFIG. 12 processing will have the ability to use the MS and applicableuser interfaces thereof.

With reference now to FIG. 29A, depicted is a flowchart for describing apreferred embodiment of a process for starting a specified number ofthreads in a specified thread pool. FIG. 29A is in itself an O/Sprocess, has a process identifier (PID) after being started, willcontain at least two threads of processing after being started, and isgeneric in being able to take on the identity of any process name passedto it (e.g. 19 xx) with a parameter (e.g. from block 1232). FIG. 29Arepresents the parent thread of a 19 xx process. The FIG. 29A process isgeneric for executing any of processes 19 xx (i.e. 1902, 1912, 1922,1932, 1942 and 1952) with the prescribed number of worker threads usingthe 19 xx-Max configuration (i.e. 1902-Max, 1912-Max, 1922-Max,1932-Max, 1942-Max and 1952-Max). FIG. 29A will stay running until it(first all of its worker thread(s)) is terminated. FIG. 29A consists ofan O/S Process 19 xx with at least a parent thread (main thread) and oneworker thread (or number of worker threads for FIG. 19 processing asdetermined by 19 xx-Max). The parent thread has purpose to stay runningwhile all worker threads are running, and to own intelligence forstarting worker threads and terminating the process when all workerthreads are terminated. The worker threads are started subordinate tothe FIG. 29A process at block 2912 using an O/S start thread interface.

A 19 xx (i.e. 1902, 1912, 1922, 1932, 1942 and 1952) process starts atblock 2902 and continues to block 2904 where the parameter passed forwhich process name to start (i.e. take on identity of) is determined(e.g. 1952). Thereafter, block 2906 creates a RAM semaphore (i.e.operating system term for a well performing Random Access Memory (RAM)semaphore with scope only within the process (i.e. to all threads of theprocess)). The local semaphore name preferably uses the process nameprefix (e.g. 1952-Sem), and is used to synchronize threads within theprocess. RAM semaphores perform significantly better than global systemsemaphores. Alternate embodiments will have process semaphore(s) createdat block 1220 in advance. Thereafter, block 2908 initializes a threadcounter (e.g. 1952-Ct) to 0 for counting the number of worker threadsactually started within the 19 xx process (e.g. 1952), block 2910initializes a loop variable J to 0, and block 2912 starts a workerthread (the first one upon first encounter of block 2912 for a process)in this process (e.g. process 1902 starts worker thread FIG. 20, . . . ,process 1952 starts worker thread FIG. 26A—see architecture 1900description below). Thereafter, block 2914 increments the loop variableby 1 and block 2916 checks if all prescribed worker threads have beenstarted. Block 2916 accesses the 19 xx-Max (e.g. 1952-Max) variable fromshared memory using a semaphore for determining the maximum number ofthreads to start in the process worker thread pool. If block 2916determines all worker threads have been started, then processingcontinues to block 2918. If block 2916 determines that not all workerthreads have been started for the process of FIG. 29A, then processingcontinues back to block 2912 for starting the next worker thread. Blocks2912 through 2916 ensure the 19 xx-Max (e.g. 1952-Max) number of workerthreads are started within the process of FIG. 29A.

Block 2918 waits until all worker threads of blocks 2912 through 2916have been started, as indicated by the worker threads themselves. Block2918 waits until the process 19 xx-Ct variable has been updated to theprescribed 19 xx-Max value by the started worker threads, therebyindicating they are all up and running. When all worker threads arestarted (e.g. 1952-Ct=1952-Max), thereafter block 2920 waits (perhaps avery long time) until the worker thread count (e.g. 1952-Ct) has beenreduced back down to 0 for indicating that all worker threads have beenterminated, for example when the user gracefully powers off the MS.Block 2920 continues to block 2922 when all worker threads have beenterminated. Block 2922 sets the shared memory variable for the 19 xxprocess (e.g. 1952-PID) to 0 using a semaphore for indicating that the19 xx (e.g. 1952) process is disabled and no longer running. Thereafter,the 19 xx process terminates at block 2924. Waiting at blocks 2918 and2920 are accomplished in a variety of well known methods:

-   -   Detect signal sent to process by last started (or terminated)        worker thread that thread count is now MAX (or 0); or    -   Loop on checking the thread count with sleep time between        checks, wherein within the loop there is a check of the current        count (use RAM semaphore to access), and processing exits the        loop (and block) when the count has reached the sought value; or    -   Use of a semaphore for a count variable which causes the parent        thread of FIG. 29A to stay blocked prior to the count reaching        its value, and causes the parent thread to become cleared (will        leave wait block) when the count reaches its sought value.

Starting threads of processing in FIG. 29A has been presented from asoftware perspective, but there are hardware/firmware thread embodimentswhich may be started appropriately to accomplish the same functionality.If the MS operating system does not have an interface for returning thePID at block 1232, then FIG. 29A can have a block (e.g. 2905) used todetermine its own PID for setting the 19 xx-PID variable.

FIGS. 13A through 13C depict an illustration of data processing systemwireless data transmissions over some wave spectrum. Embodiments mayexist for any of the aforementioned wave spectrums, and data carriedthereon may or may not be encrypted (e.g. encrypted WDR information).With reference now to FIG. 13A, a MS, for example a DLM 200 a,sends/broadcasts data such as a data 1302 in a manner well known tothose skilled in the art, for example other character 32 processingdata. When a Communications Key (CK) 1304 is embedded within data 1302,data 1302 is considered usual communications data (e.g. protocol, voice,or any other data over conventional forward channel, reverse channel,voice data channel, data transmission channel, or any other prior artuse channel) which has been altered to contain CK 1304. Data 1302contains a CK 1304 which can be detected, parsed, and processed whenreceived by another MS or other data processing system in the vicinityof the MS (e.g. DLM 200 a) as determined by the maximum range oftransmission 1306. CK 1304 permits “piggy-backing” on currenttransmissions to accomplish new functionality as disclosed herein.Transmission from the MS radiate out from it in all directions in amanner consistent with the wave spectrum used. The radius 1308represents a first range of signal reception from the MS 200 a, perhapsby another MS (not shown). The radius 1310 represents a second range ofsignal reception from the MS 200 a, perhaps by another MS (not shown).The radius 1311 represents a third range of signal reception from the MS200 a, perhaps by another MS (not shown). The radius 1306 represents alast and maximum range of signal reception from the MS 200 a, perhaps byanother MS (not shown). MS design for maximum radius 1306 may take intoaccount the desired maximum range versus acceptable wave spectrumexposure health risks for the user of the MS. The time of transmissionfrom MS 200 a to radius 1308 is less than times of transmission from MS200 a to radiuses 1310, 1311, or 1306. The time of transmission from MS200 a to radius 1310 is less than times of transmission from MS 200 a toradiuses 1311 or 1306. The time of transmission from MS 200 a to radius1311 is less than time of transmission from MS 200 a to radius 1306.

In another embodiment, data 1302 contains a Communications Key (CK) 1304because data 1302 is new transmitted data in accordance with the presentdisclosure. Data 1302 purpose is for carrying CK 1304 information forbeing detected, parsed, and processed when received by another MS orother data processing system in the vicinity of the MS (e.g. DLM 200 a)as determined by the maximum range of transmission 1306.

With reference now to FIG. 13B, a MS, for example an ILM 1000 k,sends/broadcasts data such as a data 1302 in a manner well known tothose skilled in the art. Data 1302 and CK 1304 are as described abovefor FIG. 13A. Data 1302 or CK 1304 can be detected, parsed, andprocessed when received by another MS or other data processing system inthe vicinity of the MS (e.g. ILM 1000 k) as determined by the maximumrange of transmission 1306. Transmission from the MS radiate out from itin all directions in a manner consistent with the wave spectrum used,and as described above for FIG. 13A.

With reference now to FIG. 13C, a service or set of servicessends/broadcasts data such as a data packet 1312 in a manner well knownto those skilled in the art, for example to service other character 32processing. When a Communications Key (CK) 1314 is embedded within data1312, data 1312 is considered usual communications data (e.g. protocol,voice, or any other data over conventional forward channel, reversechannel, voice data channel, data transmission channel, or any otherprior art use channel) which has been altered to contain CK 1314. Data1312 contains a CK 1314 which can be detected, parsed, and processedwhen received by an MS or other data processing system in the vicinityof the service(s) as determined by the maximum range of transmission1316. CK 1314 permits “piggy-backing” on current transmissions toaccomplish new functionality as disclosed herein. Transmissions radiateout in all directions in a manner consistent with the wave spectrumused, and data carried thereon may or may not be encrypted (e.g.encrypted WDR information). The radius 1318 represents a first range ofsignal reception from the service (e.g. antenna thereof), perhaps by aMS (not shown). The radius 1320 represents a second range of signalreception from the service (e.g. antenna thereof), perhaps by a MS (notshown). The radius 1322 represents a third range of signal receptionfrom the service (e.g. antenna thereof), perhaps by a MS (not shown).The radius 1316 represents a last and maximum range of signal receptionfrom the service (e.g. antenna thereof), perhaps by a MS (not shown).The time of transmission from service to radius 1318 is less than timesof transmission from service to radiuses 1320, 1322, or 1316. The timeof transmission from service to radius 1320 is less than times oftransmission from service to radiuses 1322 or 1316. The time oftransmission from service to radius 1322 is less than time oftransmission from service to radius 1316. In another embodiment, data1312 contains a Communications Key (CK) 1314 because data 1312 is newtransmitted data in accordance with the present disclosure. Data 1312purpose is for carrying CK 1314 information for being detected, parsed,and processed when received by another MS or data processing system inthe vicinity of the service(s) as determined by the maximum range oftransmission.

In some embodiments, data 1302 and 1312 are prior art wireless datatransmission packets with the exception of embedding a detectable CK1304 and/or CK 1314, respectively. Usual data communications of MSs arealtered to additionally contain the CK so data processing systems in thevicinity can detect, parse, and process the CK. Appropriate send and/orbroadcast channel processing is used. In other embodiments, data 1302and 1312 are new broadcast wireless data transmission packets forcontaining CK 1304 and CK 1314, respectively. A MS may use send queue 24for sending/broadcasting packets to data processing systems in thevicinity, and may use the receive queue 26 for receiving packets fromother data processing systems in the vicinity. Contents of CKs(Communications Keys) depend on which LBX features are in use and thefunctionality intended.

In the case of “piggybacking” on usual communications, receive queue 26insertion processing simply listens for the usual data and whendetecting CK presence, inserts CK information appropriately to queue 26for subsequent processing. Also in the case of “piggybacking” on usualcommunications, send queue 24 retrieval processing simply retrieves CKinformation from the queue and embeds it in an outgoing data 1302 atfirst opportunity. In the case of new data communications, receive queue26 insertion processing simply listens for the new data containing CKinformation, and inserts CK information appropriately to queue 26 forsubsequent processing. Also in the case of new data communications, sendqueue 24 retrieval processing simply retrieves CK information from thequeue and transmits CK information as new data.

LBX: LN-EXPANSE Configuration

FIG. 14A depicts a flowchart for describing a preferred embodiment of MSLBX configuration processing. FIG. 14 is of Self Management Processingcode 18. MS LBX configuration begins at block 1402 upon user action tostart the user interface and continues to block 1404 where userinterface objects are initialized for configurations described belowwith current settings that are reasonable for display to available userinterface real estate. Thereafter, applicable settings are presented tothe user at block 1406 with options. Block 1406 preferably presents tothe user at least whether or not DLM capability is enabled (i.e. MS tobehave as a DLM=at least one role of DLMV enabled), whether or not ILMcapability is enabled (i.e. MS to behave as an ILM=at least one role ofILMV enabled), and/or whether or not this MS should participate in theLN-expanse as a source location for other MSs (e.g. process 1902 and/or1942 enabled). Alternative embodiments will further present more or lessinformation for each of the settings, or present information associatedwith other FIG. 14 blocks of processing. Other embodiments will notconfigure DLM settings for an MS lacking DLM capability (or when allDLMV roles disabled). Other embodiments will not configure ILM settingswhen DLM capability is present. Block 1406 continues to block 1408 whereprocessing waits for user action in response to options. Block 1408continues to block 1410 when a user action is detected. If block 1410determines the user selected to configure DLM capability (i.e. DLMVrole(s)), then the user configures DLM role(s) at block 1412 andprocessing continues back to block 1406. Block 1412 processing isdescribed by FIG. 15A. If block 1410 determines the user did not selectto configure DLM capability (i.e. DLMV role(s)), then processingcontinues to block 1414. If block 1414 determines the user selected toconfigure ILM capability (i.e. ILMV role(s)), then the user configuresILM role(s) at block 1416 and processing continues back to block 1406.Block 1416 processing is described by FIG. 15B. If block 1414 determinesthe user did not select to configure ILM capability (i.e. ILMV role(s)),then processing continues to block 1418. If block 1418 determines theuser selected to configure NTP use, then the user configures NTP use atblock 1420 and processing continues back to block 1406. Block 1420processing is described by FIG. 16.

If block 1418 determines the user did not select to configure NTP use,then processing continues to block 1422.

If block 1422 determines the user selected to maintain the WDR queue,then the user maintains WDRs at block 1424 and processing continues backto block 1406. Block 1424 processing is described by FIG. 17. Blocks1412, 1416, 1420 and 1424 are understood to be delimited by appropriatesemaphore control to avoid multi-threaded access problems. If block 1422determines the user did not select to maintain the WDR queue, thenprocessing continues to block 1426. If block 1426 determines the userselected to configure the confidence floor value, then block 1428prepares parameters for invoking a Configure Value procedure (parametersfor reference (address) of value to configure; and validity criteria ofvalue to configure), and the Configure Value procedure of FIG. 18 isinvoked at block 1430 with the two (2) parameters. Thereafter,processing continues back to block 1406. Blocks 1428 and 1430 areunderstood to be delimited by appropriate semaphore control whenmodifying the confidence floor value since other threads can access thefloor value.

The confidence floor value is the minimum acceptable confidence value ofany field 1100 d (for example as checked by block 276). No WDR with afield 1100 d less than the confidence floor value should be used todescribe MS whereabouts. In an alternative embodiment, the confidencefloor value is enforced as the same value across an LN-expanse with nouser control to modify it. One embodiment of FIG. 14 does not permituser control over a minimum acceptable confidence floor value. Variousembodiments will default the floor value. Block 1812 enforces anappropriate value in accordance with the confidence value rangeimplemented (e.g. value from 1 to 100). Since the confidence ofwhereabouts is likely dependent on applications in use at the MS, thepreferred embodiment is to permit user configuration of the acceptablewhereabouts confidence for the MS. A new confidence floor value can beput to use at next thread(s) startup, or can be used instantly with themodification made, depending on the embodiment. The confidence floorvalue can be used to filter out WDRs prior to inserting to queue 22,filter out WDRs when retrieving from queue 22, filter out WDRinformation when listening on channel(s) prior to inserting to queue 26,and/or used in accessing queue 22 for any reason (depending onembodiments). While confidence is validated on both inserts and queries(retrievals/peeks), one or the other validation is fine (preferably oninserts). It is preferred that executable code incorporate checks whereapplicable since the confidence floor value can be changed after queue22 is in use. Also, various present disclosure embodiments may maintainall confidences to queue 22, or a particular set of acceptableconfidences.

If block 1426 determines the user did not select to configure theconfidence floor value, then processing continues to block 1432. Ifblock 1432 determines the user selected to configure the WhereaboutsTimeliness Variable (WTV), then block 1434 prepares parameters forinvoking the Configure Value procedure (parameters for reference(address) of value to configure; and validity criteria of value toconfigure), and the Configure Value procedure of FIG. 18 is invoked atblock 1430 with the two (2) parameters. Thereafter, processing continuesback to block 1406. Blocks 1434 and 1430 are understood to be delimitedby appropriate semaphore control when modifying the WTV since otherthreads can access the WTV.

A critical configuration for MS whereabouts processing is whereaboutstimeliness. Whereabouts timeliness is how often (how timely) an MSshould have accurate whereabouts. Whereabouts timeliness is dependent onhow often the MS is updated with whereabouts information, whattechnologies are available or are in the vicinity, how capable the MS isof maintaining whereabouts, processing speed(s), transmission speed(s),known MS or LN-expanse design constraints, and perhaps other factors. Insome embodiments, whereabouts timeliness is as soon as possible. Thatis, MS whereabouts is updated whenever possible as often as possible. Infact, the present disclosure provides an excellent system andmethodology to accomplish that by leveraging location technologieswhenever and wherever possible. However, there should be balance whenconsidering less capable processing of a MS to prevent hogging CPUcycles from other applications at the MS. In other embodiments, ahard-coded or preconfigured time interval is used for keeping an MSinformed of its whereabouts in a timely manner. For example, the MSshould know its own whereabouts at least every second, or at least every5 seconds, or at least every minute, etc. Whereabouts timeliness iscritical depending on the applications in use at the MS. For example, ifMS whereabouts is updated once at the MS every 5 minutes during highspeeds of travel when using navigation, the user has a high risk ofmissing a turn during travel in downtown cities where timely decisionsfor turns are required. On the other hand, if MS whereabouts is updatedevery 5 seconds, and an application only requires an update accuracy toonce per minute, then the MS may be excessively processing.

In some embodiments, there is a Whereabouts Timeliness Variable (WTV)configured at the MS (blocks 1432, 1434, 1430). Whether it is userconfigured, system configured, or preset in a system, the WTV is usedto:

-   -   Define the maximum period of time for MS whereabouts to become        stale at any particular time;    -   Cause the MS to seek its whereabouts if whereabouts information        is not up to date in accordance with the WTV; and    -   Prevent keeping the MS too busy with keeping abreast of its own        whereabouts.        In another embodiment, the WTV is automatically adjusted based        on successes or failures of automatically locating the MS. As        the MS successfully maintains timely whereabouts, the WTV is        maintained consistent with the user configured, system        configured, or preset value, or in accordance with active        applications in use at the time. However, as the MS fails in        maintaining timely whereabouts, the WTV is automatically        adjusted (e.g. to longer periods of time to prevent unnecessary        wasting of power and/or CPU resources). Later, as whereabouts        become readily available, the WTV can be automatically adjusted        back to the optimal value. In an emergency situation, the user        always has the ability to force the MS to determine its own        whereabouts anyway. (Blocks 856 and 862 through 878, in light of        a WDR request and WDR response described for architecture 1900).        In embodiments where the WTV is adjusted in accordance with        applications in use at the time, the most demanding requirement        of any application started is maintained to the WTV. Preferably,        each application of the MS initializes to an API of the MS with        a parameter of its WTV requirements. If the requirement is more        timely than the current value, then the more timely value is        used. The WTV can be put to use at next thread(s) startup, or        can be used instantly with the modification made, depending on        the embodiment.

If block 1432 determines the user did not select to configure the WTV,then processing continues to block 1436. If block 1436 determines theuser selected to configure the maximum number of threads in a 19 xxprocess (see 19 xx-Max variable in FIG. 19 discussions), then block 1438interfaces with the user until a valid 19 xx-max variable is selected,and processing continues to block 1440. If block 1440 determines the 19xx process is already running (i.e. 19 xx-PID>0 implies it is enabled),then an error is provided to the user at block 1442, and processingcontinues back to block 1406. Preferably, block 1442 does not continueback to block 1406 until the user acknowledges the error (e.g. with auser action). If block 1440 determines the user selected 19 xx process(process 1902, process 1912, process 1922, process 1932, process 1942,or process 1952) is not already running (i.e. 19 xx-PID=0 implies it isdisabled), then block 1444 prepares parameters for invoking theConfigure Value procedure (parameters for reference (address) of 19xx-Max value to configure; and validity criteria of value to configure),and the Configure Value procedure of FIG. 18 is invoked at block 1430with the two (2) parameters. Thereafter, processing continues back toblock 1406. Blocks 1438, 1440, 1444 and 1430 are understood to bedelimited by appropriate semaphore control when modifying the 19 xx-Maxvalue since other threads can access it. The 19 xx-Max value should notbe modified while the 19 xx process is running because the number ofthreads to terminate may be changed prior to terminating. An alternateembodiment of modifying a process number of threads will dynamicallymodify the number of threads in anticipation of required processing.

If block 1436 determines the user did not select to configure a processthread maximum (19 xx-Max), then block 1446 checks to see if the userselected to (toggle) disable or enable a particular process (i.e. a 19xx process of FIG. 19). If block 1446 determines the user did select totoggle enabling/disabling a particular FIG. 19 process, then block 1448interfaces with the user until a valid 19 xx process name is selected,and processing continues to block 1450. If block 1450 determines the 19xx process is already running (i.e. 19 xx-PID>0 implies it is enabled),then block 1454 prepares parameters (just as does block 2812).Thereafter, block 1456 invokes FIG. 29B processing (just as does block2814). Processing then continues back to block 1406. If block 1450determines the 19 xx process is not running (i.e. 19 xx-PID=0 implies itis disabled), then block 1452 invokes FIG. 29A processing (just as doesblock 1232). Processing then continues back to block 1406. Block 1456does not continue back to block 1406 until the process is completelyterminated. Blocks 1448, 1450, 1452, 1454 and 1456 are understood to bedelimited by appropriate semaphore control.

Preferred embodiments of blocks 1446 and 1448 use convenient names ofprocesses being started or terminated, rather than convenient briefprocess names such as 1902, 1912, 1922, 1932, 1942, or 1952 used inflowcharts. In some embodiments, the long readable name is used, such aswhereabouts broadcast process (1902), whereabouts collection process(1912), whereabouts supervisor process (1922), timing determinationprocess (1932), WDR request process (1942), and whereaboutsdetermination process (1952). For example, the user may know that thewhereabouts supervisor process enabled/disabled indicates whether or notto have whereabouts timeliness monitored in real time. Enabling thewhereabouts supervisor process enables monitoring for the WTV in realtime, and disabling the whereabouts supervisor process disablesmonitoring the WTV in real time.

In another embodiment of blocks 1446 and 1448, a completely new name ordescription may be provided to any of the processes to facilitate userinterface usability. For example, a new name Peer Location SourceVariable (PLSV) can be associated to the whereabouts broadcast process1902 and/or 1942. PLSV may be easier to remember. If the PLSV wastoggled to disabled, the whereabouts broadcast process 1902 and/or 1942terminates. If the PLSV was toggled to enabled, the whereaboutsbroadcast process 1902 and/or 1942 is started. It may be easier toremember that the PLSV enables/disables whether or not to allow this MSto be a location source for other MSs in an LN-expanse.

In other embodiments, a useful name (e.g. PLSV) represents starting andterminating any subset of 19 xx processes (a plurality (e.g. 1902 and1942)) for simplicity. In yet other embodiments, FIG. 14A/14B can beused to start or terminate worker thread(s) in any process, for exampleto throttle up more worker threads in a process, or to throttle down forless worker threads in a process, perhaps modifying thread instances toaccommodate the number of channels for communications, or for thedesired performance. There are many embodiments for fine tuning thearchitecture 1900 for optimal peer to peer interaction. In yet otherembodiments, toggling may not be used. There may be individual optionsavailable at block 1408 for setting any data of this disclosure.Similarly, the 19 xx-Max variables may be modified via individual userfriendly names and/or as a group of 19 xx-Max variables.

Referring back to block 1446, if it is determined the user did notselect to toggle for enabling/disabling process(es), then processingcontinues to block 1458. If block 1458 determines the user selected toexit FIG. 14A/14B configuration processing, then block 1460 terminatesthe user interface appropriately and processing terminates at block1462. If block 1458 determines the user did not select to exit the userinterface, then processing continues to block 1466 of FIG. 14B by way ofoff page connector 1464.

With reference now to FIG. 14B, depicted is a continued portionflowchart of FIG. 14A for describing a preferred embodiment of MS LBXconfiguration processing. If block 1466 determines the user selected toconfigure the Source Periodicity Time Period (SPTP) value, then block1468 prepares parameters for invoking the Configure Value procedure(parameters for reference (address) of value to configure; and validitycriteria of value to configure), and the Configure Value procedure ofFIG. 18 is invoked at block 1470 with the two (2) parameters.Thereafter, processing continues back to block 1406 by way of off pageconnector 1498. Blocks 1468 and 1470 are understood to be delimited byappropriate semaphore control when modifying the SPTP value since otherthreads can access it. The SPTP configures the time period betweenbroadcasts by thread(s) 1902, for example 5 seconds. Some embodiments donot permit configuration of the SPTP.

If block 1466 determines the user did not select to configure the SPTPvalue, then processing continues to block 1472. If block 1472 determinesthe user selected to configure service propagation, then the userconfigures service propagation at block 1474 and processing continuesback to block 1406 by way of off page connector 1498. If block 1472determines the user did not select to configure service propagation,then processing continues to block 1476.

If block 1476 determines the user selected to configure permissions 10,then the user configures permissions at block 1478 and processingcontinues back to block 1406 by way of off page connector 1498. If block1476 determines the user did not select to configure permissions 10,then processing continues to block 1480. If block 1480 determines theuser selected to configure charters 12, then the user configurescharters 12 at block 1482 and processing continues back to block 1406 byway of off page connector 1498. If block 1480 determines the user didnot select to configure charters 12, then processing continues to block1484. If block 1484 determines the user selected to configure statistics14, then the user configures statistics 14 at block 1486 and processingcontinues back to block 1406 by way of off page connector 1498. If block1484 determines the user did not select to configure statistics 14, thenprocessing continues to block 1488. If block 1488 determines the userselected to configure service informant code 28, then the userconfigures code 28 at block 1490 and processing continues back to block1406 by way of off page connector 1498. If block 1488 determines theuser did not select to configure code 28, then processing continues toblock 1492. If block 1492 determines the user selected to maintain LBXhistory 30, then the user maintains LBX history at block 1494 andprocessing continues back to block 1406 by way of off page connector1498. If block 1492 determines the user did not select to maintain LBXhistory 30, then processing continues to block 1496.

Block 1496 handles other user interface actions leaving block 1408, andprocessing continues back to block 1406 by way of off page connector1498.

Details of blocks 1474, 1478, 1482, 1486, 1490, 1494, and perhaps moredetail to block 1496, are described with other flowcharts. Appropriatesemaphores are requested at the beginning of block processing, andreleased at the end of block processing, for thread safe access toapplicable data at risk of being accessed by another thread ofprocessing at the same time of configuration. In some embodiments, auser/administrator with secure privileges to the MS has ability toperform any subset of configurations of FIGS. 14A and 14B processing,while a general user may not. Any subset of FIG. 14 configuration mayappear in alternative embodiments, with or without authenticatedadministrator access to perform configuration.

FIG. 15A depicts a flowchart for describing a preferred embodiment ofDLM role configuration processing of block 1412. Processing begins atblock 1502 and continues to block 1504 which accesses current DLMVsettings before continuing to block 1506. If there were no DLMV entries(list empty) as determined by block 1506, then block 1508 provides anerror to the user and processing terminates at block 1518. The DLMV maybe empty when the MS has no local DLM capability and there hasn't yetbeen any detected DLM capability, for example as evidenced by WDRsinserted to queue 22. Preferably, the error presented at block 1508requires the user to acknowledge the error (e.g. with a user action)before block 1508 continues to block 1518. If block 1506 determines atleast one entry (role) is present in the DLMV, then the current DLMVsetting(s) are saved at block 1510, the manage list processing procedureof FIG. 15C is invoked at block 1512 with the DLMV as a reference(address) parameter, and processing continues to block 1514.

Block 1514 determines if there were any changes to the DLMV from FIG.15C processing by comparing the DLMV after block 1512 with the DLMVsaved at block 1510. If there were changes via FIG. 15C processing, suchas a role which was enabled prior to block 1512 which is now disabled,or such as a role which was disabled prior to block 1512 which is nowenabled, then block 1514 continues to block 1516 which handles the DLMVchanges appropriately. Block 1516 continues to block 1518 whichterminates FIG. 15A processing. If block 1514 determines there were nochanges via block 1512, then processing terminates at block 1518.

Block 1516 enables newly enabled role(s) as does block 1238 describedfor FIG. 12. Block 1516 disables newly disabled role(s) as does block2804 described for FIG. 28.

FIG. 15B depicts a flowchart for describing a preferred embodiment ofILM role configuration processing of block 1416. Processing begins atblock 1522 and continues to block 1524 which accesses current ILMVsettings before continuing to block 1526. If there were no ILMV entries(list empty) as determined by block 1526, then block 1528 provides anerror to the user and processing terminates at block 1538. The ILMV maybe empty when the MS is not meant to have ILM capability. Preferably,the error presented at block 1528 requires the user to acknowledge theerror before block 1528 continues to block 1538. If block 1526determines at least one entry (role) is present in the ILMV, then thecurrent ILMV setting(s) are saved at block 1530, the manage listprocessing procedure of FIG. 15C is invoked with a reference (address)parameter of the ILMV at block 1532, and processing continues to block1534.

Block 1534 determines if there were any changes to the ILMV from FIG.15C processing by comparing the ILMV after block 1532 with the ILMVsaved at block 1530. If there were changes via FIG. 15C processing, suchas a role which was enabled prior to block 1532 which is now disabled,or such as a role which was disabled prior to block 1532 which is nowenabled, then block 1534 continues to block 1536 which handles the ILMVchanges appropriately. Block 1536 continues to block 1538 whichterminates FIG. 15B processing. If block 1534 determines there were nochanges via block 1532, then processing terminates at block 1538.

Block 1536 enables newly enabled role(s) as does blocks 1224 through1234 described for FIG. 12. Block 1536 disables newly disabled role(s)as does blocks 2806 through 2816 described for FIG. 28.

FIG. 15C depicts a flowchart for describing a preferred embodiment of aprocedure for Manage List processing. Processing starts at block 1552and continues to block 1554. Block 1554 presents the list (DLMcapability if arrived to by way of FIG. 15A; ILM capability if arrivedto by way of FIG. 15B) to the user, as passed to FIG. 15C processingwith the reference parameter by the invoker, with which list items aremarked (enabled) and which are unmarked (disabled) along with options,before continuing to block 1556 for awaiting user action. Block 1554highlights currently enabled roles, and ensures disabled roles are nothighlighted in the presented list. When a user action is detected atblock 1556, thereafter, block 1558 checks if a list entry was enabled(marked) by the user, in which case block 1560 marks the list item asenabled, saves it to the list (e.g. DLMV or ILMV), and processingcontinues back to block 1554 to refresh the list interface. If block1558 determines the user did not respond with an enable action, thenblock 1562 checks for a disable action. If block 1562 determines theuser wanted to disable a list entry, then block 1564 marks (actuallyunmarks it) the list item as disabled, saves it to the list (e.g. DLMVor ILMV), and processing continues back to block 1554. If block 1562determines the user did not want to disable a list item, then block 1566checks if the user wanted to exit FIG. 15C processing. If block 1566determines the user did not select to exit list processing, thenprocessing continues to block 1568 where other user interface actionsare appropriately handled and then processing continues back to block1554. If block 1566 determines the user did select to exit manage listprocessing, then FIG. 15C processing appropriately returns to the callerat block 1570.

FIG. 15C interfaces with the user for desired DLMV (via FIG. 15A) orILMV (via FIG. 15B) configurations. In some embodiments, it makes senseto have user control over enabling or disabling DLM and/or ILMcapability (roles) to the MS, for example for software or hardwaretesting.

FIG. 16 depicts a flowchart for describing a preferred embodiment of NTPuse configuration processing of block 1420. Processing starts at block1602 and continues to block 1604 where the current NTP use setting isaccessed. Thereafter, block 1606 presents the current NTP use setting toits value of enabled or disabled along with options, before continuingto block 1608 for awaiting user action. When a user action is detectedat block 1608, block 1610 checks if the NTP use setting was disabled atblock 1608, in which case block 1612 terminates NTP use appropriately,block 1614 sets (and saves) the NTP use setting to disabled, andprocessing continues back to block 1606 to refresh the interface. Block1612 disables NTP as does block 2828.

If block 1610 determines the user did not respond for disabling NTP,then block 1616 checks for a toggle to being enabled. If block 1616determines the user wanted to enable NTP use, then block 1618 accessesknown NTP server address(es) (e.g. ip addresses preconfigured to the MS,or set with another user interface at the MS), and pings each one, ifnecessary, at block 1620 with a timeout. As soon as one NTP server isdetermined to be reachable, block 1620 continues to block 1622. If noNTP server was reachable, then the timeout will have expired for eachone tried at block 1620 for continuing to block 1622. Block 1622determines if at least one NTP server was reachable at block 1620. Ifblock 1622 determines no NTP server was reachable, then an error ispresented to the user at block 1624 and processing continues back toblock 1606. Preferably, the error presented at block 1624 requires theuser to acknowledge the error before block 1624 continues to block 1606.If block 1622 determines that at least one NTP server was reachable,then block 1626 initializes NTP use appropriately, block 1628 sets theNTP use setting to enabled (and saves), and processing continues back toblock 1606. Block 1626 enables NTP as does block 1210.

Referring back to block 1616, if it is determined the user did not wantto enable NTP use, then processing continues to block 1630 where it ischecked if the user wanted to exit FIG. 16 processing. If block 1630determines the user did not select to exit FIG. 16 processing, thenprocessing continues to block 1632 where other user interface actionsleaving block 1608 are appropriately handled, and then processingcontinues back to block 1606. If block 1630 determines the user didselect to exit processing, then FIG. 16 processing terminates at block1634.

FIG. 17 depicts a flowchart for describing a preferred embodiment of WDRmaintenance processing of block 1424. Processing starts at block 1702and continues to block 1704 where it is determined if there are any WDRsof queue 22. If block 1704 determines there are no WDRs for processing,then block 1706 presents an error to the user and processing continuesto block 1732 where FIG. 17 processing terminates. Preferably, the errorpresented at block 1706 requires the user to acknowledge the errorbefore block 1706 continues to block 1732. If block 1704 determinesthere is at least one WDR, then processing continues to block 1708 wherethe current contents of WDR queue 22 is appropriately presented to theuser (in a scrollable list if necessary). Thereafter, block 1710 awaitsuser action. When a user action is detected at block 1710, block 1712checks if the user selected to delete a WDR from queue 22, in which caseblock 1714 discards the selected WDR, and processing continues back toblock 1708 for a refreshed presentation of queue 22. If block 1712determines the user did not select to delete a WDR, then block 1716checks if the user selected to modify a WDR. If block 1716 determinesthe user wanted to modify a WDR of queue 22, then block 1718 interfaceswith the user for validated WDR changes before continuing back to block1708. If block 1716 determines the user did not select to modify a WDR,then block 1720 checks if the user selected to add a WDR to queue 22. Ifblock 1720 determines the user selected to add a WDR (for example, tomanually configure MS whereabouts), then block 1722 interfaces with theuser for a validated WDR to add to queue 22 before continuing back toblock 1708. If block 1720 determines the user did not select to add aWDR, then block 1724 checks if the user selected to view detailedcontents of a WDR, perhaps because WDRs are presented in an abbreviatedform at block 1708. If it is determined at block 1724 the user didselect to view details of a WDR, then block 1726 formats the WDR indetail form, presents it to the user, and waits for the user to exit theview of the WDR before continuing back to block 1708. If block 1724determines the user did not select to view a WDR in detail, then block1728 checks if the user wanted to exit FIG. 17 processing. If block 1728determines the user did not select to exit FIG. 17 processing, thenprocessing continues to block 1730 where other user interface actionsleaving block 1710 are appropriately handled, and then processingcontinues back to block 1708. If block 1728 determines the user didselect to exit processing, then FIG. 17 processing terminates at block1732.

There are many embodiments for maintaining WDRs of queue 22. In someembodiments, FIG. 17 (i.e. block 1424) processing is only provided fordebug of an MS. In a single instance WDR embodiment, block 1708 presentsthe one and only WDR which is used to keep current MS whereaboutswhenever possible. Other embodiments incorporate any subset of FIG. 17processing.

FIG. 18 depicts a flowchart for describing a preferred embodiment of aprocedure for variable configuration processing, namely the ConfigureValue procedure, for example for processing of block 1430. Processingstarts at block 1802 and continues to block 1804 where parameters passedby the invoker of FIG. 18 are determined, namely the reference (address)of the value for configuration to be modified, and the validity criteriafor what makes the value valid. Passing the value by reference simplymeans that FIG. 18 has the ability to directly change the value,regardless of where it is located. In some embodiments, the parameter isan address to a memory location for the value. In another embodiment,the value is maintained in a database or some persistent storage, andFIG. 18 is passed enough information to know how to permanentlyaffect/change the value.

Block 1804 continues to block 1806 where the current value passed ispresented to the user (e.g. confidence floor value), and then to block1808 for awaiting user action. When a user action is detected at block1808, block 1810 checks if the user selected to modify the value, inwhich case block 1812 interfaces with the user for a validated valueusing the validity criteria parameter before continuing back to block1806. Validity criteria may take the form of a value range, value type,set of allowable values, or any other criteria for what makes the valuea valid one.

If block 1810 determines the user did not select to modify the value,then block 1814 checks if the user wanted to exit FIG. 18 processing. Ifblock 1814 determines the user did not select to exit FIG. 18processing, then processing continues to block 1816 where other userinterface actions leaving block 1808 are appropriately handled, and thenprocessing continues back to block 1806. If block 1814 determines theuser did select to exit processing, then FIG. 18 processingappropriately returns to the caller at block 1818.

LBX: LN-EXPANSE Interoperability

FIG. 19 depicts an illustration for describing a preferred embodimentmultithreaded architecture of peer interaction processing of a MS inaccordance with the present disclosure. MS architecture 1900 preferablyincludes a set of Operating System (O/S) processes (i.e. O/S terminology“process” with O/S terminology “thread” or “threads (i.e. thread(s))),including a whereabouts broadcast process 1902, a whereabouts collectionprocess 1912, a whereabouts supervisor process 1922, a timingdetermination process 1932, a WDR request process 1942, and awhereabouts determination process 1952. Further included are queues forinteraction of processing, and process associated variables tofacilitate processing. All of the FIG. 19 processes are of PIP code 6.There is preferably a plurality (pool) of worker threads within each ofsaid 19 xx processes (i.e. 1902, 1912, 1922, 1932, 1942 and 1952) forhigh performance asynchronous processing. Each 19 xx process (i.e. 1902,1912, 1922, 1932, 1942 and 1952) preferably has at least two (2)threads:

-   -   1) “parent thread”; and    -   2) “worker thread”.        A parent thread (FIG. 29A) is the main process thread for:    -   starting the particular process;    -   starting the correct number of worker thread(s) of that        particular process;    -   staying alive while all worker threads are busy processing; and    -   properly terminating the process when worker threads are        terminated.        The parent thread is indeed the parent for governing behavior of        threads at the process whole level. Every process has a name for        convenient reference, such as the names 1902, 1912, 1922, 1932,        1942 and 1952. Of course, these names may take on the associated        human readable forms of whereabouts broadcast process,        whereabouts collection process, whereabouts supervisor process,        timing determination process, WDR request process, and        whereabouts determination process, respectively. For brevity,        the names used herein are by the process label of FIG. 19 in a        form 19 xx. There must be at least one worker thread in a        process. Worker thread(s) are described with a flowchart as        follows:    -   1902—FIG. 20;    -   1912—FIG. 21;    -   1922—FIG. 22;    -   1932—FIG. 23;    -   1942—FIG. 25; and    -   1952—FIG. 26A.        Threads of architecture MS are presented from a software        perspective, but there are applicable hardware/firmware process        thread embodiments accomplished for the same functionality. In        fact, hardware/firmware embodiments are preferred when it is        known that processing is mature (i.e. stable) to provide the        fastest possible performance. Architecture 1900 processing is        best achieved at the highest possible performance speeds for        optimal wireless communications processing. There are two (2)        types of processes for describing the types of worker threads:    -   1) “Slave to Queue”; and    -   2) “Slave to Timer”.

A 19 xx process is a slave to queue process when its worker thread(s)are driven by feeding from a queue of architecture 1900. A slave toqueue process stays “blocked” (O/S terminology “blocked”=preempted) on aqueue entry retrieval interface until the sought queue item is insertedto the queue. The queue entry retrieval interface becomes “cleared” (O/Sterminology “cleared”=clear to run) when the sought queue entry isretrieved from the queue by a thread. These terms (blocked and cleared)are analogous to a semaphore causing a thread to be blocked, and athread to be cleared, as is well known in the art. Queues have semaphorecontrol to ensure no more than one thread becomes clear at a time for asingle queue entry retrieved (as done in an O/S). One thread sees aparticular queue entry, but many threads can feed off the same queue todo the same work concurrently. Slave to queue type of processes are1912, 1932, 1942 and 1952. A slave to queue process is properlyterminated by inserting a special termination queue entry for eachworker thread to terminate itself after queue entry retrieval.

A 19 xx process is a slave to timer process when its worker thread(s)are driven by a timer for peeking a queue of architecture 1900. A timerprovides the period of time for a worker thread to sleep during a loopediteration of checking a queue for a sought entry (without removing theentry from the queue). Slave to timer threads periodically peek a queue,and based on what is found, will process appropriately. A queue peekdoes not alter the peeked queue. The queue peek interface is semaphoreprotected for preventing peeking at an un-opportune time (e.g. whilethread inserting or retrieving from queue). Queue interfaces ensure onethread is acting on a queue with a queue interface at any particulartime. Slave to timer type of processes are 1902 and 1922. A slave totimer process is properly terminated by inserting a special terminationqueue entry for each worker thread to terminate itself by queue entrypeek.

Block 2812 knows the type of 19 xx process for preparing the processtype parameter for invocation of FIG. 29B at block 2814. The type ofprocess has slightly different termination requirements because of theworker thread(s) processing type. Alternate embodiments of slave totimer processes will make them slave to queue processes by simplyfeeding off Thread Request (TR) queue 1980 for driving a worker threadwhen to execute (and when to terminate). New timer(s) would inserttimely queue entries to queue 1980, and processes 1902 and 1922 wouldretrieve from the queue (FIG. 24A record 2400). The queue entries wouldbecome available to queue 1980 when it is time for a particular workerthread to execute. Worker threads of processes 1902 and 1922 couldretrieve, and stay blocked on, queue 1980 until an entry was inserted bya timer for enabling a worker thread (field 2400 a set to 1902 or 1912).TR queue 1980 is useful for starting any threads of architecture 1900 ina slave to queue manner. This may be a cleaner architecture for allthread pools to operate the same way (slave to queue). Nevertheless, thetwo thread pool methods are implemented.

Each 19 xx process has at least four (4) variables for describingpresent disclosure processing:

-   -   19 xx-PID=The O/S terminology “Process Identifier (PID)” for the        O/S PID of the 19 xx process. This variable is also used to        determine if the process is enabled (PID>0), or is disabled        (PID=0 (i.e. <=0));    -   19 xx-Max=The configured number of worker thread(s) for the 19        xx process;    -   19 xx-Sem=A process local semaphore for synchronizing 19 xx        worker threads, for example in properly starting up worker        threads in process 19 xx, and for properly terminating worker        threads in process 19 xx; and    -   19 xx-Ct=A process local count of the number of worker thread(s)        currently running in the 19 xx process.        19 xx-PID and 19 xx-Max are variables of PIP data 8. 19 xx-Sem        and 19 xx-Ct are preferably process 19 xx stack variables within        the context of PIP code 6. 19 xx-PID is a semaphore protected        global variable in architecture 1900 so that it can be used to        determine whether or not a particular 19 xx process is enabled        (i.e. running) or disabled (not running). 19 xx-Max is a        semaphore protected global variable in architecture 1900 so that        user configuration processing outside of architecture 1900 can        be used to administrate a desired number of worker threads for a        19 xx process. Alternate embodiments will not provide user        configuration of 19 xx-Max variables (e.g. hard coded maximum        number of threads), in which case no 19 xx-Max global variable        is necessary. “Thread(s) 19 xx” is a brief form of stating        “worker thread(s) of the 19 xx process”.

Receive (Rx) queue 26 is for receiving CK 1304 or CK 1314 data (e.g. WDRor WDR requests), for example from wireless transmissions. Queue 26 willreceive at least WDR information (destined for threads 1912) and WDRrequests (FIG. 24C records 2490 destined for threads 1942). At least onethread (not shown) is responsible for listening on appropriatechannel(s) and immediately depositing appropriate records to queue 26 sothat they can be processed by architecture 1900. Preferably, there is aplurality (pool) of threads for feeding queue 26 based on channel(s)being listened on, and data 1302 or 1312 anticipated for being received.Alternative embodiments of thread(s) 1912 may themselves directly belistening on appropriate channels and immediately processing packetsidentified, in lieu of a queue 26. Alternative embodiments of thread(s)1942 may themselves directly be listening on appropriate channels andimmediately processing packets identified, in lieu of a queue 26. Queue26 is preferred to isolate channel(s) (e.g. frequency(s)) andtransmission reception processing in well known modular (e.g. RadioFrequency (RF)) componentry, while providing a high performance queueinterface to other asynchronous threads of architecture 1900 (e.g.thread(s) of process 1912). Wave spectrums (via particularcommunications interface 70) are appropriately processed for feedingqueue 26. As soon as a record is received by an MS, it is assumed readyfor processing at queue 26. All queue 26 accesses are assumed to haveappropriate semaphore control to ensure synchronous access by any threadat any particular time to prevent data corruption and misuse. Queueentries inserted to queue 26 may have arrived on different channel(s),and in such embodiments a channel qualifier may further direct queueentries from queue 26 to a particular thread 1912 or 1942 (e.g.thread(s) dedicated to channel(s)). In other embodiments, receiveprocessing feeds queue 26 independent of any particular channel(s)monitored, or received on (the preferred embodiment described).Regardless of how data is received and then immediately placed on queue26, a received date/time stamp (e.g. fields 1100 p or 2490 c) is addedto the applicable record for communicating the received date/time stampto a thread (e.g. thread(s) 1912 or 1942) of when the data was received.Therefore, the queue 26 insert interface tells the waiting thread(s)when the data was actually received. This ensures a most accuratereceived date/time stamp as close to receive processing as possible(e.g. enabling most accurate TDOA measurements). An alternate embodimentcould determine applicable received date/time stamps in thread(s) 1912or thread(s) 1942. Other data placed into received WDRs are: wavespectrum and/or particular communications interface 70 of the channelreceived on, and heading/yaw/pitch/roll (or accelerometer readings) withAOA measurements, signal strength, and other field 1100 f eligible dataof the receiving MS. Depending on alternative embodiments, queue 26 maybe viewed metaphorically for providing convenient grounds ofexplanation.

Send (Tx) queue 24 is for sending/communicating CK 1304 data, forexample for wireless transmissions. At least one thread (not shown) isresponsible for immediately transmitting (e.g. wirelessly) anythingdeposited to queue 24. Preferably, there is a plurality (pool) ofthreads for feeding off of queue 24 based on channel(s) beingtransmitted on, and data 1302 anticipated for being sent. Alternativeembodiments of thread(s) of processes 1902, 1922, 1932 and 1942 maythemselves directly transmit (send/broadcast) on appropriate channelsanything deposited to queue 24, in lieu of a queue 24. Queue 24 ispreferred to isolate channel(s) (e.g. frequency(s)) and transmissionprocessing in well known modular (e.g. RF) componentry, while providinga high performance queue interface to other asynchronous threads ofarchitecture 1900 (e.g. thread(s) 1942). Wave spectrums and/orparticular communications interface 70 are appropriately processed forsending from queue 24. All queue 24 accesses are assumed to haveappropriate semaphore control to ensure synchronous access by any threadat any particular time to prevent data corruption and misuse. As soon asa record is inserted to queue 24, it is assumed sent immediately.Preferably, fields sent depend on fields set. Queue entries inserted toqueue 24 may contain specification for which channel(s) to send on insome embodiments. In other embodiments, send processing feeding fromqueue 24 has intelligence for which channel(s) to send on (the preferredembodiment described). Depending on alternative embodiments, queue 24may be viewed metaphorically for providing convenient grounds ofexplanation.

When interfacing to queue 24, the term “broadcast” refers to sendingoutgoing data in a manner for reaching as many MSs as possible (e.g. useall participating communications interfaces 70), whereas the term “send”refers to targeting a particular MS or group of MSs.

WDR queue 22 preferably contains at least one WDR 1100 at any point intime, for at least describing whereabouts of the MS of architecture1900. Queue 22 accesses are assumed to have appropriate semaphorecontrol to ensure synchronous access by any thread at any particulartime to prevent data corruption and misuse. A single instance of dataembodiment of queue 22 may require an explicit semaphore control foraccess. In a WDR plurality maintained to queue 22, appropriate queueinterfaces are again provided to ensure synchronous thread access (e.g.implicit semaphore control). Regardless, there is still a need for aqueue 22 to maintain a plurality of WDRs from remote MSs. The preferredembodiment of all queue interfaces uses queue interface maintainedsemaphore(s) invisible to code making use of queue (e.g. API)interfaces. Depending on alternative embodiments, queue 22 may be viewedmetaphorically for providing convenient grounds of explanation.

Thread Request (TR) queue 1980 is for requesting processing by either atiming determination (worker) thread of process 1932 (i.e. thread 1932)or whereabouts determination (worker) thread of process 1952 (i.e.thread 1952). When requesting processing by a thread 1932, TR queue 1980has requests (retrieved via processing 1934 after insertion processing1918) from a thread 1912 to initiate TDOA measurement. When requestingprocessing by a thread 1952, TR queue 1980 has requests (retrieved viaprocessing 1958 after insertion processing 1918 or 1930) from a thread1912 or 1922 so that thread 1952 performs whereabouts determination ofthe MS of architecture 1900. Requests of queue 1980 comprise records2400. Preferably, there is a plurality (pool) of threads 1912 forfeeding queue 1980 (i.e. feeding from queue 26), and for feeding aplurality each of threads 1932 and 1952 from queue 1980. All queue 1980accesses are assumed to have appropriate semaphore control to ensuresynchronous access by any thread at any particular time to prevent datacorruption and misuse. Depending on alternative embodiments, queue 1980may be viewed metaphorically for providing convenient grounds ofexplanation.

With reference now to FIG. 24A, depicted is an illustration fordescribing a preferred embodiment of a thread request queue record, asmaintained to Thread Request (TR) queue 1980. TR queue 1980 is notrequired when a LN-expanse globally uses NTP, as found in thread 19 xxprocessing described for architecture 1900, however it may be requiredat a MS which does not have NTP, or a MS which interacts with anotherdata processing system (e.g. MS) that does not have NTP. Therefore, TRqueue record 2400 (i.e. queue entry 2400) may, or may not, be required.This is the reason FIG. 1A does not depict queue 1980. When NTP is inuse globally (in LN-expanse), TDOA measurements can be made using asingle unidirectional data (1302 or 1312) packet containing a sentdate/time stamp (of when the data was sent). Upon receipt, that sentdate/time stamp received is compared with the date/time of receipt todetermine the difference. The difference is a TDOA measurement. Knowingtransmission speeds with a TDOA measurement allows calculating adistance. In this NTP scenario, no thread(s) 1932 are required.

Threads 1912 and/or DLM processing may always insert the MS whereaboutswithout requirement for thread(s) 1952 by incorporating thread 1952logic into thread 1912, or by directly starting (without queue 1980) athread 1952 from a thread 1912. Therefore, threads 1952 may not berequired. If threads 1952 are not required, queue 1980 may not berequired by incorporating thread 1932 logic into thread 1912, or bydirectly starting (without queue 1980) a thread 1932 from a thread 1912.Therefore, queue 1980 may not be required, and threads 1932 may not berequired.

Records 2400 (i.e. queue entries 2400) contain a request type field 2400a and data field 2400 b. Request type field 2400 a simply routes thequeue entry to destined thread(s) (e.g. thread(s) 1932 or thread(s)1952). A thread 1932 remains blocked on queue 1980 until a record 2400is inserted which has a field 2400 a containing the value 1932. A thread1952 remains blocked on queue 1980 until a record 2400 is inserted whichhas a field 2400 a containing the value 1952. Data field 2400 b is setto zero (0) when type field 2400 a contains 1952 (i.e. not relevant).Data field 2400 b contains an MS ID (field 1100 a) value, and possibly atargeted communications interface 70 (or wave spectrum if one to one),when type field contains 1932. Field 2400 b will contain information forappropriately targeting the MS ID with data (e.g. communicationsinterface to use if MS has multiple of them). An MS with only onecommunications interface can store only a MS ID in field 2400 b.

Records 2400 are used to cause appropriate processing by 19 xx threads(e.g. 1932 or 1952) as invoked when needed (e.g. by thread(s) 1912).Process 1932 is a slave to queue type of process, and there are no queue1980 entries 2400 which will not get timely processed by a thread 1932.No interim pruning is necessary to queue 1980.

With reference now back to FIG. 19, Correlation Response (CR) queue 1990is for receiving correlation data for correlating requests transmittedin data 1302 with responses received in data 1302 or 1312. Records 2450are inserted to queue 1990 (via processing 1928) from thread(s) 1922 sothat thread(s) 1912 (after processing 1920) correlate data 1302 or 1312with requests sent by thread(s) 1922 (e.g. over interface 1926), for thepurpose of calculating a TDOA measurement. Additionally, records 2450are inserted to queue 1990 (via processing 1936) from thread(s) 1932 sothat thread(s) 1912 (after processing 1920) correlate data 1302 or 1312with requests sent by thread(s) 1932 (e.g. over interface 1938), for thepurpose of calculating a TDOA measurement. Preferably, there is aplurality (pool) of threads for feeding queue 1990 and for feeding fromqueue 1990 (feeding from queue 1990 with thread(s) 1912). All queue 1990accesses are assumed to have appropriate semaphore control to ensuresynchronous access by any thread at any particular time to prevent datacorruption and misuse. Depending on alternative embodiments, queue 1990may be viewed metaphorically for providing convenient grounds ofexplanation.

With reference now to FIG. 24B, depicted is an illustration fordescribing a preferred embodiment of a correlation response queuerecord, as maintained to Correlation Response (CR) queue 1990. CR queue1990 is not required when a LN-expanse globally uses NTP, as found inthread 19 xx processing described for architecture 1900, however it maybe required at a MS which does not have NTP, or a MS which interactswith another data processing system (e.g. MS) that does not have NTP.Therefore, CR record 2450 (i.e. queue entry 2450) may, or may not, berequired. This is the reason FIG. 1A does not depict queue 1990. Thepurpose of CR queue 1990 is to enable calculation of TDOA measurementsusing correlation data to match a request with a response. When NTP isused globally in the LN-expanse, no such correlations between a requestand response is required, as described above. In the NTP scenario,thread(s) 1912 can deduce TDOA measurements directly from responses (seeFIG. 21), and there is no requirement for threads 1932.

TDOA measurements are best taken using date/time stamps as close to theprocessing points of sending and receiving as possible, otherwisecritical regions of code may be required for enabling process timeadjustments to the measurements when processing is “further out” fromsaid points. This is the reason MS receive processing provides receiveddate/time stamps with data inserted to queue 26 (field 1100 p or 2490c). In a preferred embodiment, send queue 24 processing inserts to queue1990 so the date/time stamp field 2450 a for when sent is as close tojust prior to having been sent as possible. However, there is still therequirement for processing time spent inserting to queue 1990 prior tosending anyway. Anticipated processing speeds of architecture 1900 allowreasonably moving sent date/time stamp setting just a little “furtherout” from actually sending to keep modular send processing isolated. Apreferred embodiment (as presented) assumes the send queue 24 interfaceminimizes processing instructions from when data is placed onto queue 24and when it is actually sent, so that the sending thread(s) 19 xx (1902,1922, 1932 and 1942) insert to queue 1990 with a reasonably accuratesent/date stamp field 2450 a. This ensures a most accurate sentdate/time stamp (e.g. enabling most accurate TDOA measurements). Analternate embodiment makes appropriate adjustments for more accuratetime to consider processing instructions up to the point of sendingafter queue 1990 insertion.

Records 2450 (i.e. queue entries 2450) contain a date/time stamp field2450 a and a correlation data field 2450 b. Date/time stamp field 2450 acontains a date/time stamp of when a request (data 1302) was sent as setby the thread inserting the queue entry 2450. Correlation data field2450 b contains unique correlation data (e.g. MS id with suffix ofunique number) used to provide correlation for matching sent requests(data 1302) with received responses (data 1302 or 1312), regardless ofthe particular communications interface(s) used (e.g. different wavespectrums supported by MS). Upon a correlation match, a TDOA measurementis calculated using the time difference between field 2450 a and adate/time stamp of when the response was received (e.g. field 1100 p). Athread 1912 accesses queue 1990 for a record 2450 using correlationfield 2450 b to match, when data 1302 or 1312 contains correlation datafor matching. A thread 1912 then uses the field 2450 a to calculate aTDOA measurement. Process 1912 is not a slave to queue 1990 (but is toqueue 26). A thread 1912 peeks queue 1990 for a matching entry whenappropriate. Queue 1990 may contain obsolete queue entries 2450 untilpruning is performed. Some WDR requests may be broadcasts, thereforerecords 2450 may be used for correlating a plurality of responses. Inanother record 2450 embodiment, an additional field 2450 c is providedfor specification of which communication interface(s) and/or channel(s)to listen on for a response.

With reference now back to FIG. 19, any reasonable subset ofarchitecture 1900 processing may be incorporated in a MS. For example inone minimal subset embodiment, a DLM which has excellent direct locatingmeans only needs a single instance WDR (queue 22) and a single thread1902 for broadcasting whereabouts data to facilitate whereaboutsdetermination by other MSs. In a near superset embodiment, process 1942processing may be incorporated completely into process 1912, therebyeliminating processing 1942 by having threads 1912 feed from queue 26for WDR requests as well as WDR information. In another subsetembodiment, process 1922 may only send requests to queue 24 forresponses, or may only start a thread 1952 for determining whereaboutsof the MS. There are many viable subset embodiments depending on the MSbeing a DLM or ILM, capabilities of the MS, LN-expanse deployment designchoices, etc. A reference to FIG. 19 accompanies thread 19 xx flowcharts(FIGS. 20, 21, 22, 23, 25 and 26A). The user, preferably anadministrator type (e.g. for IbxPhone™ debug) selectively configureswhether or not to start or terminate a process (thread pool), andperhaps the number of threads to start in the pool (see FIG. 14A).Starting a process (and threads) and terminating processes (and threads)is shown in flowcharts 29A and 29B. There are other embodiments forproperly starting and terminating threads without departing from thespirit and scope of this disclosure.

FIG. 20 depicts a flowchart for describing a preferred embodiment of MSwhereabouts broadcast processing, for example to facilitate other MSs inlocating themselves in an LN-expanse. FIG. 20 processing describes aprocess 1902 worker thread, and is of PIP code 6. Thread(s) 1902 purposeis for the MS of FIG. 20 processing (e.g. a first, or sending, MS) toperiodically transmit whereabouts information to other MSs (e.g. atleast a second, or receiving, MS) to use in locating themselves. It isrecommended that validity criteria set at block 1444 for 1902-Max befixed at one (1) in the preferred embodiment. Multiple channels forbroadcast at block 2016 should be isolated to modular send processing(feeding from a queue 24).

In an alternative embodiment having multiple transmission channelsvisible to process 1902, there can be a worker thread 1902 per channelto handle broadcasting on multiple channels. If thread(s) 1902 (block2016) do not transmit directly over the channel themselves, thisembodiment would provide means for communicating the channel forbroadcast to send processing when interfacing to queue 24 (e.g.incorporate a channel qualifier field with WDR inserted to queue 24).This embodiment could allow specification of at least one (1) workerthread per channel, however multiple worker threads configurable forprocess 1902 as appropriated for the number of channels configurable forbroadcast.

Processing begins at block 2002, continues to block 2004 where theprocess worker thread count 1902-Ct is accessed and incremented by 1(using appropriate semaphore access (e.g. 1902-Sem)), and continues toblock 2006 for peeking WDR queue 22 for a special termination requestentry. Block 2004 may also check the 1902-Ct value, and signal theprocess 1902 parent thread that all worker threads are running when1902-Ct reaches 1902-Max. Thereafter, if block 2008 determines that aworker thread termination request was not found in queue 22, processingcontinues to block 2010. Block 2010 peeks the WDR queue 22 (usinginterface 1904) for the most recent highest confidence entry for this MSwhereabouts by searching queue 22 for: the MS ID field 1100 a matchingthe MS ID of FIG. 20 processing, and a confidence field 1100 d greaterthan or equal to the confidence floor value, and a most recent NTPenabled date/time stamp field 1100 b within a prescribed trailing periodof time (e.g. preferably less than or equal to 2 seconds). For example,block 2010 peeks the queue (i.e. makes a copy for use if an entry foundfor subsequent processing, but does not remove the entry from queue) fora WDR of this MS (i.e. MS of FIG. 20 processing) which has the greatestconfidence over 75 and has been most recently inserted to queue 22 withan NTP date/time stamp in the last 2 seconds. Date/time stamps for MSwhereabouts which are not NTP derived have little use in the overallpalette of process 19 xx choices of architecture 1900 because receivingdata processing systems (e.g. MSs) will have no means of determining anaccurate TDOA measurement in the unidirectional transmission from an NTPdisabled MS. A receiving data processing system will still require abidirectional correlated exchange with the MS of FIG. 20 processing todetermine an accurate TDOA measurement in its own time scale (which isaccomplished with thread(s) 1922 pulling WDR information anyway). Analternate embodiment to block 2010 will not use the NTP indicator as asearch criteria so that receiving data processing systems can receive toa thread 1912, and then continue for appropriate correlation processing,or can at least maintain whereabouts to queue 22 to know who is nearby.

Thread 1902 is of less value to the LN-expanse when it broadcastsoutdated/invalid whereabouts of the MS to facilitate locating other MSs.In an alternate embodiment, a movement tolerance (e.g. user configuredor system set (e.g. 3 meters)) is incorporated at the MS, or atservice(s) used to locate the MS, for knowing when the MS hassignificantly moved (e.g. more than 3 meters) and how long it has been(e.g. 45 seconds) since last significantly moving. In this embodiment,the MS is aware of the period of time since last significantly movingand the search time criteria is set using the amount of time since theMS significantly moved (whichever is greater). This way a large numberof (perhaps more confident candidates) WDRs are searched in the timeperiod when the MS has not significantly moved. Optional blocks 278through 284 may have been incorporated to FIG. 2F for movement toleranceprocessing just described, in which case the LWT is compared to thecurrent date/time of block 2010 processing to adjust block 2010 searchtime criteria for the correct trailing period. In any case, a WDR issought at block 2010 which will help other MSs in the LN-expanse locatethemselves, and to let other MSs know who is nearby.

Thereafter, if block 2012 determines a useful WDR was found, then block2014 prepares the WDR for send processing, block 2016 broadcasts the WDRinformation (using send interface 1906) by inserting to queue 24 so thatsend processing broadcasts data 1302 (e.g. on all availablecommunications interface(s) 70), for example as far as radius 1306, andprocessing continues to block 2018. The broadcast is for reception bydata processing systems (e.g. MSs) in the vicinity. At least fields 1100b, 1100 c, 1100 d, and 1100 n are broadcast. See FIG. 11A descriptions.Fields are set to the following upon exit from block 2014:

MS ID field 1100 a is preferably set with: Field 1100 a from queue 22,or transformed (if not already) into a pseudo MS ID (possibly for futurecorrelation) if desired. This field may also be set to null (not set)because it is not required when the NTP indicator of field 1100 b isenabled and the broadcast is sent with an NTP enabled field 1100 n.DATE/TIME STAMP field 1100 b is preferably set with: Field 1100 b fromqueue 22.LOCATION field 1100 c is preferably set with: Field 1100 c from queue22.CONFIDENCE field 1100 d is preferably set with: Field 1100 d from queue22.LOCATION TECHNOLOGY field 1100 e is preferably set with: Field 1100 efrom queue 22.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset). Null indicates to send processing feeding from queue 24 to use allavailable comm. interfaces 70 (i.e. Broadcast). Specifying a comm.interface targets the specified interface (i.e. send).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: null(not set). If MS ID (or pseudo MS ID) is sent, this is all that isrequired to target this MS.SPEED field 1100 h is preferably set with: Field 1100 h from queue 22.HEADING field 1100 i is preferably set with: Field 1100 i from queue 22.ELEVATION field 1100 j is preferably set with: Field 1100 j from queue22.APPLICATION FIELDS field 1100 k is preferably set with: Field 1100 kfrom queue 22. An alternate embodiment will add, alter, or discard data(with or without date/time stamps) here at the time of block 2014processing.CORRELATION FIELD 1100 m is preferably set with: null (not set).SENT DATE/TIME STAMP field 1100 n is preferably set with: Sent date/timestamp as close in processing the broadcast of block 2016 as possible.RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. N/A for sending).

Block 2018 causes thread 1902 to sleep according to the SPTP setting(e.g. a few seconds). When the sleep time has elapsed, processingcontinues back to block 2006 for another loop iteration of blocks 2006through 2016. Referring back to block 2012, if a useful WDR was notfound (e.g. candidates too old), then processing continues to block2018. Referring back to block 2008, if a worker thread terminationrequest entry was found at queue 22, then block 2020 decrements theworker thread count by 1 (using appropriate semaphore access (e.g.1902-Sem)), and thread 1902 processing terminates at block 2022. Block2020 may also check the 1902-Ct value, and signal the process 1902parent thread that all worker threads are terminated when 1902-Ct equalszero (0).

Block 2016 causes broadcasting data 1302 containing CK 1304 wherein CK1304 contains WDR information prepared as described above for block2014. Alternative embodiments of block 2010 may not search a specifiedconfidence value, and broadcast the best entry available anyway so thatlisteners in the vicinity will decide what to do with it. A semaphoreprotected data access (instead of a queue peek) may be used inembodiments where there is always one WDR current entry maintained forthe MS.

In the embodiment wherein usual MS communications data 1302 of the MS isaltered to contain CK 1304 for listening MSs in the vicinity, sendprocessing feeding from queue 24, caused by block 2016 processing, willplace WDR information as CK 1304 embedded in usual data 1302 at the nextopportune time of sending usual data 1302. If an opportune time is nottimely, send processing should discard the send request of block 2016 toavoid broadcasting outdated whereabouts information (unless using amovement tolerance and time since last significant movement). As the MSconducts its normal communications, transmitted data 1302 contains newdata CK 1304 to be ignored by receiving MS other character 32processing, but to be found by listening MSs within the vicinity whichanticipate presence of CK 1304. Otherwise, when LN-Expanse deploymentshave not introduced CK 1304 to usual data 1302 communicated on areceivable signal by MSs in the vicinity, FIG. 20 sends repeated timelypulsed broadcasts of new data 1302 (per SPTP) for MSs in the vicinity ofthe first MS to receive. In any case, appropriate implementation shouldensure field 1100 n is as accurate as possible for when data 1302 isactually sent.

An alternate embodiment to architecture 1900 for elimination of process1902 incorporates a trigger implementation for broadcasting MSwhereabouts at the best possible time—i.e. when the MS whereabouts isinserted to queue 22. As soon as a new (preferably NTP enabled) WDRcandidate becomes available, it can be broadcast at a new block 279 ofFIG. 2F. (e.g. new block 279 continued to from block 278 and thencontinuing to block 280). Fields are set as described above for FIG. 20.Preferably, the new block 279 starts an asynchronous thread consistingof blocks 2014 and 2016 so that FIG. 2F processing performance is notimpacted. In a further embodiment, block 279 can be further enhancedusing the SPTP value to make sure that too many broadcasts are not made.The SPTP (Source Periodicity Time Period) could be observed for gettingas close as possible to broadcasting whereabouts in accordance with SPTP(e.g. worst case there are not enough broadcasts).

FIG. 21 depicts a flowchart for describing a preferred embodiment of MSwhereabouts collection processing. FIG. 21 processing describes aprocess 1912 worker thread, and is of PIP code 6. Thread(s) 1912 purposeis for the MS of FIG. 21 processing (e.g. a second, or receiving, MS) tocollect potentially useful WDR information from other MSs (e.g. at leasta first, or sending, MS) in the vicinity for determining whereabouts ofthe receiving (second) MS. It is recommended that validity criteria setat block 1444 for 1912-Max be set as high as possible (e.g. 10) relativeperformance considerations of architecture 1900, with at least onethread per channel that WDR information may be received on by thereceiving MS. Multiple channels for receiving data fed to queue 26should be isolated to modular receive processing (feeding a queue 26).

In an alternative embodiment having multiple receiving transmissionchannels visible to process 1912 (e.g. thread(s) 1912 receivingdirectly), there can be a worker thread 1912 per channel to handlereceiving on multiple channels simultaneously. If thread(s) 1912 do notreceive directly from the channel, the preferred embodiment of FIG. 21would not need to convey channel information to thread(s) 1912 waitingon queue 26 anyway. Embodiments could allow specification/configurationof many thread(s) 1912 per channel.

Processing begins at block 2102, continues to block 2104 where theprocess worker thread count 1912-Ct is accessed and incremented by 1(using appropriate semaphore access (e.g. 1912-Sem)), and continues toblock 2106 for interim housekeeping of pruning the WDR queue by invokinga Prune Queues procedure of FIG. 27. Block 2104 may also check the1912-Ct value, and signal the process 1912 parent thread that all workerthreads are running when 1912-Ct reaches 1912-Max. Block 2106 may not berequired since block 2130 can cause queue 22 pruning (block 292).

Thereafter, block 2108 retrieves from queue 26 a WDR (using interface1914), perhaps a special termination request entry, or a WDR received indata 1302 (CK 1304) or data 1312 (CK 1314), and only continues to block2110 when a WDR has been retrieved. Block 2108 stays blocked onretrieving from queue 26 until any WDR is retrieved. If block 2110determines that a special WDR indicating to terminate was not found inqueue 26, processing continues to block 2112. Block 2112 adjustsdate/time stamp field 1100 b if necessary depending on NTP use in theLN-expanse and adjusts the confidence field 1100 d accordingly. In apreferred embodiment, fields 1100 b and 1100 d for the WDR in process isset as follows for certain conditions:

-   -   Fields 1100 b, 1100 n and 1100 p all NTP indicated: keep fields        1100 b and 1100 d as is; or    -   Fields 1100 b and 1100 n are NTP indicated, 1100 p is not: Is        correlation (field 1100 m) present?: No, then set confidence        (field 1100 d) to 0 (for filtering out at block 2114)/Yes, then        set field 1100 b to 1100 p (in time terms of this MS) and adjust        confidence lower based on differences between fields 1100 b,        1100 n and 1100 p; or    -   Fields 1100 b and 1100 p are NTP indicated, 1100 n is not: Is        correlation present?: No, then set confidence to 0 (for        filtering out at block 2114)/Yes, then set field 1100 b to 1100        p (in time terms of this MS) and adjust confidence lower based        on differences between fields 1100 b, 1100 n and 1100 p; or    -   Fields 1100 b NTP indicated, 1100 n and 1100 p not: Is        correlation present?:

No, then set confidence to 0 (for filtering out at block 2114)/Yes, thenset field 1100 b to 1100 p (in time terms of this MS) and adjustconfidence lower based on differences between fields 1100 b, 1100 n and1100 p; or

-   -   Field 1100 b not NTP indicated, 1100 n and 1100 p are: Is        correlation present?: No, then set confidence to 0 (for        filtering out at block 2114)/Yes, then set field 1100 b to 1100        p (in time terms of this MS) and adjust confidence lower based        on differences between fields 1100 b, 1100 n and 1100 p; or    -   Fields 1100 b and 1100 p are not NTP indicated, 1100 n is: Is        correlation present?: No, then set confidence to 0 (for        filtering out at block 2114)/Yes, then set field 1100 b to 1100        p (in time terms of this MS) and adjust confidence lower based        on differences between fields 1100 b, 1100 n and 1100 p; or    -   Fields 1100 b and 1100 n are not NTP indicated, 1100 p is: Is        correlation present?: No, then set confidence to 0 (for        filtering out at block 2114)/Yes, then set field 1100 b to 1100        p (in time terms of this MS) and adjust confidence lower based        on differences between fields 1100 b, 1100 n and 1100 p; or    -   Fields 1100 b, 1100 n and 1100 p not NTP indicated: Is        correlation present?: No, then set confidence to 0 (for        filtering out at block 2114)/Yes, then set field 1100 b to 1100        p (in time terms of this MS) and adjust confidence lower based        on differences between fields 1100 b, 1100 n and 1100 p.        NTP ensures maintaining a high confidence in the LN-expanse, but        absence of NTP is still useful. Confidence values should be        adjusted with the knowledge of the trailing time periods used        for searches when sharing whereabouts (e.g. thread(s) 1942        searches). Block 2112 continues to block 2114.

If at block 2114, the WDR confidence field 1100 d is not greater thanthe confidence floor value, then processing continues back to block2106. If block 2114 determines that the WDR field 1100 d issatisfactory, then block 2116 initializes a TDOA_FINAL variable toFalse, and block 2118 checks if the WDR from block 2108 containscorrelation (field 1100 m).

If block 2118 determines the WDR does not contain correlation, thenblock 2120 accesses the ILMV, block 2122 determines the source (ILM orDLM) of the WDR using the originator indicator of field 1100 e, andblock 2124 checks suitability for collection of the WDR. While processes19 xx running are generally reflective of the ILMV roles configured, itis possible that the more descriptive nature of ILMV role(s) not be oneto one in relationship to 19 xx processes, in particular depending onthe subset of architecture 1900 in use. Block 2124 is redundant anywaybecause of block 274. If block 2124 determines the ILMV role is disabledfor collecting this WDR, then processing continues back to block 2106.If block 2124 determines the ILMV role is enabled for collecting thisWDR, then processing continues to block 2126.

If block 2126 determines both the first (sending) and second (receiving)MS are NTP enabled (i.e. Fields 1100 b, 1100 n and 1100 p are NTPindicated) OR if TDOA_FINAL is set to True (as arrived to via block2150), then block 2128 completes the WDR for queue 22 insertion, block2130 prepares parameters for FIG. 2F processing and block 2132 invokesFIG. 2F processing (interface 1916). Parameters set at block 2130 are:WDRREF=a reference or pointer to the WDR completed at block 2128;DELETEQ=FIG. 21 location queue discard processing; and SUPER=FIG. 21supervisory notification processing. Block 2128 calculates a TDOAmeasurement whenever possible and inserts to field 1100 f. See FIG. 11Adescriptions. Fields are set to the following upon exit from block 2128:

MS ID field 1100 a is preferably set with: Field 1100 a from queue 26.DATE/TIME STAMP field 1100 b is preferably set with: Preferredembodiment discussed for block 2112.LOCATION field 1100 c is preferably set with: Field 1100 c from queue26.CONFIDENCE field 1100 d is preferably set with: Confidence at equal toor less than field 1100 d received from queue 26 (see preferredembodiment for block 2112).LOCATION TECHNOLOGY field 1100 e is preferably set with: Field 1100 efrom queue 26.LOCATION REFERENCE INFO field 1100 f is preferably set with: Allavailable measurements from receive processing (e.g. AOA, heading, yaw,pitch, roll, signal strength, wave spectrum, particular communicationsinterface 70, etc), and TDOA measurement(s) as determined in FIG. 21(blocks 2128 and 2148).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: Field1100 g from queue 26.SPEED field 1100 h is preferably set with: Field 1100 h from queue 26.HEADING field 1100 i is preferably set with: Field 1100 i from queue 26.ELEVATION field 1100 j is preferably set with: Field 1100 j from queue26.APPLICATION FIELDS field 1100 k is preferably set with: Field 1100 kfrom queue 26. An alternate embodiment will add, alter, or discard data(with or without date/time stamps) here at the time of block 2128processing.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22). Was used by FIG. 21 processing.SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22). Was used by FIG. 21 processing.RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22). Was used by FIG. 21processing.

Block 2132 continues to block 2134 where a record 2400 is built (i.e.field 2400 a=1952 and field 2400 b is set to null (e.g. −1)) and thenblock 2136 inserts the record 2400 to TR queue 1980 (using interface1918) so that a thread 1952 will perform processing. Blocks 2134 and2136 may be replaced with an alternative embodiment for starting athread 1952. Block 2136 continues back to block 2106.

Referring now back to block 2126, if it is determined that a TDOAmeasurement cannot be made (i.e. (field 1100 n or 1100 p not NTPindicated) OR if TDOA_FINAL is set to False), then block 2138 checks ifthe WDR contains a MS ID (or pseudo MS ID). If block 2138 determinesthere is none, then processing continues back to block 2106 becausethere is no way to distinguish one MS from another with respect to theWDR retrieved at block 2108 for directing bidirectional correlation. Analternate embodiment will use a provided correlation field 1100 mreceived at block 2108, instead of a field 1100 a, for knowing how totarget the originating MS for TDOA measurement processing initiated by athread 1932. If block 2138 determines there is a usable MS ID (orcorrelation field), then block 2140 builds a record 2400 (field 2400a=1932, field 2400 b=the MS ID (or pseudo MS ID, or correlation) andparticular communications interface from field 1100 f (if available) ofthe WDR of block 2108, and block 2142 inserts the record 2400 to queue1980 (interface 1918) for starting a thread 1932. Block 2142 continuesback to block 2106. An alternate embodiment causes block 2126 tocontinue directly to block 2140 (no block 2138) for a No condition fromblock 2126. Regardless of whether the originating MS ID can be targeted,a correlation (in lieu of an MS ID) may be used when the MS respondswith a broadcast. The WDR request made by thread 1932 can be a broadcastrather than a targeted request. Thread(s) 1932 can handle sendingtargeted WDR requests (to a known MS ID) and broadcast WDR requests.

Referring back to block 2118, if it is determined the WDR does containcorrelation (field 1100 m), block 2144 peeks the CR queue 1990 (usinginterface 1920) for a record 2450 containing a match (i.e. field 1100 mmatched to field 2450 b). Thereafter, if block 2146 determines nocorrelation was found on queue 1990 (e.g. response took too long andentry was pruned), then processing continues to block 2120 alreadydescribed. If block 2146 determines the correlation entry was found(i.e. thread 1912 received a response from an earlier request (e.g. froma thread 1922 or 1932), then block 2148 uses date/time stamp field 2450a (from block 2144) with field 1100 p (e.g. from block 2108) tocalculate a TDOA measurement in time scale of the MS of FIG. 21processing, and sets field 1100 f appropriately in the WDR. Note thatcorrelation field 2450 b is valid across all available MS communicationsinterfaces (e.g. all supported active wave spectrums). The TDOAmeasurement considers duration of time between the earlier sentdate/time of record 2450 and the later time of received date/time field1100 p. The TDOA measurement may further be altered at block 2148processing time to a distance knowing the velocity of the wave spectrumused as received to queue 26. Block 2148 continues to block 2150 wherethe TDOA_FINAL variable is set to True, then to block 2120 forprocessing already described.

Referring back to block 2110, if a WDR for a worker thread terminationrequest was found at queue 26, then block 2152 decrements the workerthread count by 1 (using appropriate semaphore access (e.g. 1912-Sem)),and thread 1912 processing terminates at block 2154. Block 2152 may alsocheck the 1912-Ct value, and signal the process 1912 parent thread thatall worker threads are terminated when 1912-Ct equals zero (0).

In the embodiment wherein usual MS communications data 1302 of the MS isaltered to contain CK 1304 or 1314 for listening MSs in the vicinity,receive processing feeding queue 26 will place WDR information to queue26 as CK 1304 or 1314 is detected for being present in usualcommunication data 1302 or 1304. As normal communications are conducted,transmitted data 1302 or 1312 contains new data CK 1304 or 1314 to beignored by receiving MS other character 32 processing, but to be foundby listening MSs within the vicinity which anticipate presence of CK1304 or 1314. Otherwise, when LN-Expanse deployments have not introducedCK 1304 (or 1314) to usual data 1302 (or 1312) communicated on areceivable signal by MSs in the vicinity, FIG. 21 receives new data 1302(or 1312) sent. In any case, field 1100 p should be as accurate aspossible for when data 1302 (or 1312) was actually received. Criticalregions of code and/or anticipated execution timing may be used toaffect a best setting of field 1100 p.

So, FIG. 21 is responsible for maintaining whereabouts of others toqueue 22 with data useful for triangulating itself.

FIG. 22 depicts a flowchart for describing a preferred embodiment of MSwhereabouts supervisor processing, for example to ensure the MS of FIG.22 processing (e.g. first MS) is maintaining timely whereaboutsinformation for itself. FIG. 22 processing describes a process 1922worker thread, and is of PIP code 6. Thread(s) 1922 purpose is for theMS of FIG. 22 processing (e.g. a first, or sending, MS), afterdetermining its whereabouts are stale, to periodically transmit requestsfor whereabouts information from MSs in the vicinity (e.g. from at leasta second, or receiving, MS), and/or to start a thread 1952 forimmediately determining whereabouts. Alternative embodiments to FIG. 22will implement processing of blocks 2218 through 2224, or processing ofblocks 2226 through 2228, or both as depicted in FIG. 22. It isrecommended that validity criteria set at block 1444 for 1922-Max befixed at one (1) in the preferred embodiment. Multiple channels forbroadcast at block 2224 should be isolated to modular send processingfeeding from a queue 24.

In an alternative embodiment having multiple transmission channelsvisible to process 1922, there can be a worker thread 1922 per channelto handle broadcasting on multiple channels. If thread(s) 1922 (block2224) do not transmit directly over the channel, this embodiment wouldprovide means for communicating the channel for broadcast to sendprocessing when interfacing to queue 24 (e.g. incorporate a channelqualifier field with WDR request inserted to queue 24). This embodimentcould allow specification of one (1) thread per channel, howevermultiple worker threads configurable for process 1922 as determined bythe number of channels configurable for broadcast.

Processing begins at block 2202, continues to block 2204 where theprocess worker thread count 1922-Ct is accessed and incremented by 1(using appropriate semaphore access (e.g. 1922-Sem)), and continues toblock 2206 for interim housekeeping of pruning the CR queue by invokinga Prune Queues procedure of FIG. 27. Block 2204 may also check the1922-Ct value, and signal the process 1922 parent thread that all workerthreads are running when 1922-Ct reaches 1922-Max. Block 2206 continuesto block 2208 for peeking WDR queue 22 (using interface 1924) for aspecial termination request entry. Thereafter, if block 2210 determinesthat a worker thread termination request was not found in queue 22,processing continues to block 2212. Block 2212 peeks the WDR queue 22(using interface 1924) for the most recent highest confidence entry forthis MS whereabouts by searching queue 22 for: the MS ID field 1100 amatching the MS ID of FIG. 22 processing, and a confidence field 1100 dgreater than or equal to the confidence floor value, and a most recentdate/time stamp field 1100 b within a prescribed trailing period of timeof block 2212 search processing using a function of the WTV (i.e.f(WTV)=short-hand for “function of WTV”) for the period. For example,block 2212 peeks the queue (i.e. makes a copy for use if an entry foundfor subsequent processing, but does not remove the entry from queue) fora WDR of the first MS which has the greatest confidence over 75 and hasbeen most recently inserted to queue 22 in the last 3 seconds. Since theMS whereabouts accuracy may be dependent on timeliness of the WTV, it isrecommended that the f(WTV) be some value less than or equal to WTV, butpreferably not greater than the WTV. Thread 1922 is of less value to theMS when not making sure in a timely manner the MS is maintaining timelywhereabouts for itself. In an alternate embodiment, a movement tolerance(e.g. user configured or system set (e.g. 3 meters)) is incorporated atthe MS, or at service(s) used to locate the MS, for knowing when the MShas significantly moved (e.g. more than 3 meters) and how long it hasbeen (e.g. 45 seconds) since last significantly moving. In thisembodiment, the MS is aware of the period of time since lastsignificantly moving and the f(WTV) is set using the amount of timesince the MS significantly moved (i.e. f(WTV)=as described above, or theamount of time since significantly moving, whichever is greater). Thisway a large number of (perhaps more confident candidates) WDRs aresearched in the time period when the MS has not significantly moved.Optional blocks 278 through 284 may have been incorporated to FIG. 2Ffor movement tolerance processing just described, in which case the LWTis compared to the current date/time to adjust the WTV for the correcttrailing period. In any case, a WDR is sought at block 2212 which willverify whether or not MS whereabouts are current.

Thereafter, if block 2214 determines a satisfactory WDR was found, thenprocessing continues to block 2216. Block 2216 causes thread 1922 tosleep according to a f(WTV) (preferably a value less than or equal tothe WTV (e.g. 95% of WTV)). When the sleep time has elapsed, processingcontinues back to block 2206 for another loop iteration of blocks 2206through 2214.

If block 2214 determines a current WDR was not found, then block 2218builds a WDR request (e.g. containing record 2490 with field 2490 a forthe MS of FIG. 22 processing (MS ID or pseudo MS ID) so receiving MSs inthe LN-expanse know who to respond to, and field 2490 b with appropriatecorrelation for response), block 2220 builds a record 2450 (usingcorrelation generated for the request at block 2218), block 2222 insertsthe record 2450 to queue 1990 (using interface 1928), and block 2224broadcasts the WDR request (record 2490) for responses. Absence of field2490 d indicates to send processing feeding from queue 24 to broadcaston all available comm. interfaces 70.

With reference now to FIG. 24C, depicted is an illustration fordescribing a preferred embodiment of a WDR request record, ascommunicated to queue 24 or 26. When a LN-expanse globally uses NTP, asfound in thread 19 xx processing described for architecture 1900, a WDRrequest record 2490 may, or may not, be required. TDOA calculations canbe made using a single unidirectional data (1302 or 1312) packetcontaining a sent date/time stamp (of when the data was sent) asdescribed above.

Records 2490 contain a MS ID field 2490 a and correlation field 2490 b.MS ID field 2490 a contains an MS ID (e.g. a value of field 1100 a). Analternate embodiment will contain a pseudo MS ID (for correlation),perhaps made by a derivative of the MS ID with a unique (suffix)portion, so that receiving MSs can directly address the MS sending therequest without actually knowing the MS ID (i.e. they know the pseudo MSID which enables the MS to recognize originated transmissions).Correlation data field 2490 b contains unique correlation data (e.g. MSid with suffix of unique number) used to provide correlation formatching sent requests (data 1302) with received WDR responses (data1302 or 1312). Upon a correlation match, a TDOA measurement iscalculated using the time difference between field 2450 a and adate/time stamp of when the response was received (e.g. field 1100 p).Received date/time stamp field 2490 c is added by receive processingfeeding queue 26 when an MS received the request from another MS. Comminterface field 2490 d is added by receive processing inserting to queue26 for how to respond and target the originator. Many MSs do not havechoices of communications interfaces, so field 2490 d may not berequired. If available it is used, otherwise a response can be abroadcast. Field 2490 d may contain a wave spectrum identifier foruniquely identifying how to respond (e.g. one to one with communicationsinterface), or any other value for indicating how to send given how therequest was received.

With reference back to FIG. 22, block 2218 builds a request thatreceiving MSs will know is for soliciting a response with WDRinformation. Block 2218 generates correlation for field 2450 b to bereturned in responses to the WDR request broadcast at block 2224. Block2220 also sets field 2450 a to when the request was sent. Preferably,field 2450 a is set as close to the broadcast as possible. In analternative embodiment, broadcast processing feeding from queue 24 makesthe record 2450 and inserts it to queue 1990 with a most accurate timeof when the request was actually sent. Fields 2450 a are to be asaccurate as possible. Block 2224 broadcasts the WDR request data 1302(using send interface 1926) by inserting to queue 24 so that sendprocessing broadcasts data 1302, for example as far as radius 1306.Broadcasting preferably uses all available communications interface(s)70 (e.g. all available wave spectrums). Therefore, the comm interfacefield 2490 d is not set (which implies to send processing to do abroadcast).

Block 2224 continues to block 2226 where a record 2400 is built (i.e.field 2400 a=1952 and field 2400 b is set to null (e.g. −1)) and thenblock 2228 inserts the record 2400 to TR queue 1980 (using interface1930) so that a thread 1952 will perform processing. Blocks 2226 and2228 may be replaced with an alternative embodiment for starting athread 1952. Block 2228 continues back to block 2216.

Referring back to block 2210, if a worker thread termination requestentry was found at queue 22, then block 2230 decrements the workerthread count by 1 (using appropriate semaphore access (e.g. 1922-Sem)),and thread 1922 processing terminates at block 2232. Block 2230 may alsocheck the 1922-Ct value, and signal the process 1922 parent thread thatall worker threads are terminated when 1922-Ct equals zero (0).

In the embodiment wherein usual MS communications data 1302 of the MS isaltered to contain CK 1304 for listening MSs in the vicinity, sendprocessing feeding from queue 24, caused by block 2224 processing, willplace the request as CK 1304 embedded in usual data 1302 at the nextopportune time of sending usual data 1302. This may require thealternative embodiment of adding the entry to queue 1990 being part ofsend processing. As the MS conducts its normal communications,transmitted data 1302 contains new data CK 1304 to be ignored byreceiving MS other character 32 processing, but to be found by listeningMSs within the vicinity which anticipate presence of CK 1304. Otherwise,when LN-Expanse deployments have not introduced CK 1304 to usual data1302 communicated on a receivable signal by MSs in the vicinity, FIG. 22sends new WDR request data 1302.

FIG. 23 depicts a flowchart for describing a preferred embodiment of MStiming determination processing. FIG. 23 processing describes a process1932 worker thread, and is of PIP code 6. Thread(s) 1932 purpose is forthe MS of FIG. 23 processing to determine TDOA measurements when neededfor WDR information received. It is recommended that validity criteriaset at block 1444 for 1932-Max be set as high as possible (e.g. 12)relative performance considerations of architecture 1900, to servicemultiple threads 1912.

Processing begins at block 2302, continues to block 2304 where theprocess worker thread count 1932-Ct is accessed and incremented by 1(using appropriate semaphore access (e.g. 1932-Sem)), and continues toblock 2306 for interim housekeeping of pruning the CR queue by invokinga Prune Queues procedure of FIG. 27. Block 2304 may also check the1932-Ct value, and signal the process 1932 parent thread that all workerthreads are running when 1932-Ct reaches 1932-Max.

Thereafter, block 2308 retrieves from queue 1980 a record 2400 (usinginterface 1934), perhaps a special termination request entry, or arecord 2400 received from thread(s) 1912, and only continues to block2310 when a record 2400 containing field 2400 a set to 1932 has beenretrieved. Block 2308 stays blocked on retrieving from queue 1980 untila record 2400 with field 2400 a=1932 is retrieved. If block 2310determines a special entry indicating to terminate was not found inqueue 1980, processing continues to block 2312.

If at block 2312, the record 2400 does not contain a MS ID (or pseudo MSID) in field 2400 b, processing continues to block 2314 for building aWDR request (record 2490) to be broadcast, and then to block 2318.Broadcasting preferably uses all available communications interface(s)70 (e.g. all available wave spectrums). If block 2312 determines thefield 2400 b is a valid MS ID (not null), block 2316 builds a WDRrequest targeted for the MS ID, and processing continues to block 2318.A targeted request is built for targeting the MS ID (and communicationsinterface, if available) from field 2400 b. Send processing is toldwhich communications interface to use, if available (e.g. MS hasmultiple), otherwise send processing will target each availableinterface. In the unlikely case a MS ID is present in field 2400 bwithout the communications interface applicable, then all communicationsinterfaces 70 are used with the targeted MS ID. In MS embodiments withmultiple communications interfaces 70, then 2400 b is to contain theapplicable communication interface for sending. Block 2318 generatesappropriate correlation for a field 2450 b (e.g. to be compared with aresponse WDR at block 2144), block 2320 sets field 2450 a to the currentMS date/time stamp, block 2322 inserts the record 2450 to queue 1990(using interface 1936), and block 2324 sends/broadcasts (using interface1938) a WDR request (record 2490). Thereafter, processing continues backto block 2306 for another loop iteration. An alternative embodiment willonly target a WDR request to a known MS ID. For example, block 2312would continue back to block 2306 if no MS ID is found (=null),otherwise it will continue to block 2316 (i.e. no use for block 2314).

Block 2318 sets field 2450 b to correlation to be returned in responsesto the WDR request sent/broadcast at block 2324. Block 2320 sets field2450 a to when the request is sent. Preferably, field 2450 a is set asclose as possible to when a send occurred. In an alternative embodiment,send processing feeding from queue 24 makes the record 2450 and insertsit to queue 1990 with a most accurate time of when the request wasactually sent. Fields 2450 a are to be as accurate as possible. Block2324 sends/broadcasts the WDR request data 1302 (using send interface1938) by inserting to queue 24 a record 2490 (2490 a=the targeted MS ID(or pseudo MS ID) OR null if arrived to from block 2314, field 2490b=correlation generated at block 2318) so that send processing sendsdata 1302, for example as far as radius 1306. A null MS ID may beresponded to by all MSs in the vicinity. A non-null MS ID is to beresponded to by a particular MS. Presence of field 2490 d indicates tosend processing feeding from queue 24 to target the MS ID over thespecified comm. interface (e.g. when MS has a plurality of comm.interfaces 70 (e.g. cellular, Wifi, Bluetooth, etc; i.e. MS supportsmultiple classes of wave spectrum)).

Referring back to block 2310, if a worker thread termination request wasfound at queue 1980, then block 2326 decrements the worker thread countby 1 (using appropriate semaphore access (e.g. 1932-Sem)), and thread1932 processing terminates at block 2328. Block 2326 may also check the1932-Ct value, and signal the process 1932 parent thread that all workerthreads are terminated when 1932-Ct equals zero (0).

In the embodiment wherein usual MS communications data 1302 of the MS isaltered to contain CK 1304 for listening MSs in the vicinity, sendprocessing feeding from queue 24, caused by block 2324 processing, willplace the WDR request as CK 1304 embedded in usual data 1302 at the nextopportune time of sending usual data 1302. As the MS conducts its normalcommunications, transmitted data 1302 contains new data CK 1304 to beignored by receiving MS other character 32 processing, but to be foundby listening MSs within the vicinity which anticipate presence of CK1304. This may require the alternative embodiment of adding the entry toqueue 1990 being part of send processing. Otherwise, when LN-Expansedeployments have not introduced CK 1304 to usual data 1302 communicatedon a receivable signal by MSs in the vicinity, FIG. 22 sends/broadcastsnew WDR request data 1302.

An alternate embodiment to block 2324 can wait for a response with areasonable timeout, thereby eliminating the need for blocks 2318 through2322 which is used to correlate the subsequent response (to thread 1912)with the request sent at block 2324. However, this will cause apotentially unpredictable number of simultaneously executing thread(s)1932 when many MSs are in the vicinity.

Thread(s) 1932 are useful when one or both parties to WDR transmission(sending and receiving MS) do not have NTP enabled. TDOA measurementsare taken to triangulate the MS relative other MSs in real time.

FIG. 25 depicts a flowchart for describing a preferred embodiment of MSWDR request processing, for example when a remote MS requests (e.g. fromFIG. 22 or 23) a WDR. Receive processing identifies targeted requestsdestined (e.g. FIG. 23) for the MS of FIG. 25 processing, and identifiesgeneral broadcasts (e.g. FIG. 22) for processing as well. FIG. 25processing describes a process 1942 worker thread, and is of PIP code 6.Thread(s) 1942 purpose is for the MS of FIG. 25 processing to respond toincoming WDR requests. It is recommended that validity criteria set atblock 1444 for 1942-Max be set as high as possible (e.g. 10) relativeperformance considerations of architecture 1900, to service multiple WDRrequests simultaneously. Multiple channels for receiving data fed toqueue 26 should be isolated to modular receive processing.

In an alternative embodiment having multiple receiving transmissionchannels visible to process 1942, there can be a worker thread 1942 perchannel to handle receiving on multiple channels simultaneously. Ifthread(s) 1942 do not receive directly from the channel, the preferredembodiment of FIG. 25 would not need to convey channel information tothread(s) 1942 waiting on queue 24 anyway. Embodiments could allowspecification/configuration of many thread(s) 1942 per channel.

Processing begins at block 2502, continues to block 2504 where theprocess worker thread count 1942-Ct is accessed and incremented by 1(using appropriate semaphore access (e.g. 1942-Sem)), and continues toblock 2506 for retrieving from queue 26 a record 2490 (using interface1948), perhaps a special termination request entry, and only continuesto block 2508 when a record 2490 is retrieved. Block 2506 stays blockedon retrieving from queue 26 until any record 2490 is retrieved. If block2508 determines a special entry indicating to terminate was not found inqueue 26, processing continues to block 2510. There are variousembodiments for thread(s) 1912 and thread(s) 1942 to feed off a queue 26for different record types, for example, separate queues 26A and 26B, ora thread target field with either record found at queue 26 (e.g. likefield 2400 a). In another embodiment, thread(s) 1912 are modified withlogic of thread(s) 1942 to handle all records described for a queue 26,since thread(s) 1912 are listening for queue 26 data anyway.

Block 2510 peeks the WDR queue 22 (using interface 1944) for the mostrecent highest confidence entry for this MS whereabouts by searchingqueue 22 for: the MS ID field 1100 a matching the MS ID of FIG. 25processing, and a confidence field 1100 d greater than or equal to theconfidence floor value, and a most recent date/time stamp field 1100 bwithin a prescribed trailing period of time of block 2510 searchprocessing (e.g. 2 seconds). For example, block 2510 peeks the queue(i.e. makes a copy for use if an entry found for subsequent processing,but does not remove the entry from queue) for a WDR of the MS (of FIG.25 processing) which has the greatest confidence over 75 and has beenmost recently inserted to queue 22 in the last 2 seconds. It isrecommended that the trailing period of time used by block 2510 be nevergreater than a few seconds. Thread 1942 is of less value to theLN-expanse when it responds with outdated/invalid whereabouts of the MSto facilitate locating other MSs. In an alternate embodiment, a movementtolerance (e.g. user configured or system set (e.g. 3 meters)) isincorporated at the MS, or at service(s) used to locate the MS, forknowing when the MS has significantly moved (e.g. more than 3 meters)and how long it has been (e.g. 45 seconds) since last significantlymoving. In this embodiment, the MS is aware of the period of time sincelast significantly moving and the trailing period of time used by block2510 is set using the amount of time since the MS significantly moved,or the amount of time since significantly moving, whichever is greater.This way a large number of (perhaps more confident candidate) WDRs aresearched in the time period when the MS has not significantly moved.Optional blocks 278 through 284 may have been incorporated to FIG. 2Ffor movement tolerance processing just described, in which case the LWTis compared to the current date/time to adjust the trailing period oftime used by block 2510 for the correct trailing period. In any case, aWDR is sought at block 2510 to satisfy a request helping another MS inthe LN-expanse locate itself.

Thereafter, if block 2512 determines a useful WDR was not found, thenprocessing continues back to block 2506 for another loop iteration ofprocessing an inbound WDR request. If block 2512 determines a useful WDRwas found, then block 2514 prepares the WDR for send processing withcorrelation field 1100 m set from correlation field 2490 b retrieved atblock 2506, and block 2516 sends/broadcasts (per field 2490 a) the WDRinformation (using send interface 1946) by inserting to queue 24 so thatsend processing transmits data 1302, for example as far as radius 1306,and processing continues back to block 2506. At least fields 1100 b,1100 c, 1100 d, 1100 m and 1100 n are sent/broadcast. See FIG. 11Adescriptions. Fields are set to the following upon exit from block 2514:

MS ID field 1100 a is preferably set with: Field 2490 a from queue 26.DATE/TIME STAMP field 1100 b is preferably set with: Field 1100 b fromqueue 22.LOCATION field 1100 c is preferably set with: Field 1100 c from queue22.CONFIDENCE field 1100 d is preferably set with: Field 1100 d from queue22.LOCATION TECHNOLOGY field 1100 e is preferably set with: Field 1100 efrom queue 22.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset) for Broadcast by send processing, otherwise set to field 2490 d forSend by send processing.COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: null(not set).SPEED field 1100 h is preferably set with: Field 1100 h from queue 22.HEADING field 1100 i is preferably set with: Field 1100 i from queue 22.ELEVATION field 1100 j is preferably set with: Field 1100 j from queue22.APPLICATION FIELDS field 1100 k is preferably set with: Field 1100 kfrom queue 22. An alternate embodiment will add, alter, or discard data(with or without date/time stamps) here at the time of block 2514processing.CORRELATION FIELD 1100 m is preferably set with: Field 2490 b from queue26.SENT DATE/TIME STAMP field 1100 n is preferably set with: Sent date/timestamp as close in processing the send/broadcast of block 2516 aspossible.RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. N/A for sending).

Embodiments may rely completely on the correlation field 2490 b with noneed for field 2490 a. Referring back to block 2508, if a worker threadtermination request was found at queue 26, then block 2518 decrementsthe worker thread count by 1 (using appropriate semaphore access (e.g.1942-Sem)), and thread 1942 processing terminates at block 2520. Block2518 may also check the 1942-Ct value, and signal the process 1942parent thread that all worker threads are terminated when 1942-Ct equalszero (0).

Block 2516 causes sending/broadcasting data 1302 containing CK 1304,depending on the type of MS, wherein CK 1304 contains WDR informationprepared as described above for block 2514. Alternative embodiments ofblock 2510 may not search a specified confidence value, and broadcastthe best entry available anyway so that listeners in the vicinity willdecide what to do with it. A semaphore protected data access (instead ofa queue peek) may be used in embodiments where there is always one WDRcurrent entry maintained for the MS.

In the embodiment wherein usual MS communications data 1302 of the MS isaltered to contain CK 1304 for listening MSs in the vicinity, sendprocessing feeding from queue 24, caused by block 2516 processing, willplace WDR information as CK 1304 embedded in usual data 1302 at the nextopportune time of sending usual data 1302. If an opportune time is nottimely, send processing should discard the send request of block 2516 toavoid broadcasting outdated whereabouts information (unless using amovement tolerance and time since last significant movement). As the MSconducts its normal communications, transmitted data 1302 contains newdata CK 1304 to be ignored by receiving MS other character 32processing, but to be found by listening MSs within the vicinity whichanticipate presence of CK 1304. Otherwise, when LN-Expanse deploymentshave not introduced CK 1304 to usual data 1302 communicated on areceivable signal by MSs in the vicinity, FIG. 25 sends/broadcasts newWDR response data 1302. In any case, field 1100 n should be as accurateas possible for when data 1302 is actually sent. Critical regions ofcode (i.e. prevent thread preemption) and/or anticipated executiontiming may be used to affect a best setting of field 1100 n.

In an alternate embodiment, records 2490 contain a sent date/time stampfield 2490 e of when the request was sent by a remote MS, and thereceived date/time stamp field 2490 c is processed at the MS in FIG. 25processing. This would enable block 2514 to calculate a TDOA measurementfor returning in field 1100 f of the WDR sent/broadcast at block 2516.

FIG. 26A depicts a flowchart for describing a preferred embodiment of MSwhereabouts determination processing. FIG. 26A processing describes aprocess 1952 worker thread, and is of PIP code 6. Thread(s) 1952 purposeis for the MS of FIG. 26A processing to determine its own whereaboutswith useful WDRs from other MSs. It is recommended that validitycriteria set at block 1444 for 1952-Max be set as high as possible (e.g.10) relative performance considerations of architecture 1900, to servicemultiple threads 1912. 1952-Max may also be set depending on what DLMcapability exists for the MS of FIG. 26A processing. In an alternateembodiment, thread(s) 19 xx are automatically throttled up or down (e.g.1952-Max) per unique requirements of the MS as it travels.

Processing begins at block 2602, continues to block 2604 where theprocess worker thread count 1952-Ct is accessed and incremented by 1(using appropriate semaphore access (e.g. 1952-Sem)), and continues toblock 2606 for interim housekeeping of pruning the WDR queue by invokinga Prune Queues procedure of FIG. 27. Block 2604 may also check the1952-Ct value, and signal the process 1952 parent thread that all workerthreads are running when 1952-Ct reaches 1952-Max. Block 2606 may not benecessary since pruning may be accomplished at block 2620 when invokingFIG. 2F (block 292).

Thereafter, block 2608 retrieves from queue 1980 a record 2400 (usinginterface 1958), perhaps a special termination request entry, or arecord 2400 received from thread(s) 1912, and only continues to block2610 when a record 2400 containing field 2400 a set to 1952 has beenretrieved. Block 2608 stays blocked on retrieving from queue 1980 untila record 2400 with field 2400 a=1952 is retrieved. If block 2610determines a special entry indicating to terminate was not found inqueue 1980, processing continues to block 2612.

Block 2612 peeks the WDR queue 22 (using interface 1954) for the mostrecent highest confidence entry for this MS whereabouts by searchingqueue 22 for: the MS ID field 1100 a matching the MS ID of FIG. 26Aprocessing, and a confidence field 1100 d greater than or equal to theconfidence floor value, and a most recent date/time stamp field 1100 bwithin a prescribed trailing period of time of block 2612 searchprocessing using a f(WTV) for the period. For example, block 2612 peeksthe queue (i.e. makes a copy for use if an entry found for subsequentprocessing, but does not remove the entry from queue) for a WDR of theMS (of FIG. 26A processing) which has the greatest confidence over 75and has been most recently inserted to queue 22 in the last 2 seconds.Since MS whereabouts accuracy may be dependent on timeliness of the WTV,it is recommended that the f(WTV) be some value less than or equal toWTV. In an alternate embodiment, a movement tolerance (e.g. userconfigured or system set (e.g. 3 meters)) is incorporated at the MS, orat service(s) used to locate the MS, for knowing when the MS hassignificantly moved (e.g. more than 3 meters) and how long it has been(e.g. 45 seconds) since last significantly moving. In this embodiment,the MS is aware of the period of time since last significantly movingand the f(WTV) is set using the amount of time since the MSsignificantly moved (i.e. f(WTV)=as described above, or the amount oftime since significantly moving, whichever is greater). This way a largenumber of (perhaps more confident candidate) WDRs are searched in thetime period when the MS has not significantly moved. Optional blocks 278through 284 may have been incorporated to FIG. 2F for movement toleranceprocessing just described, in which case the LWT is compared to thecurrent date/time to adjust the WTV for the correct trailing period.

Thereafter, if block 2614 determines a timely whereabouts for this MSalready exists to queue 22 (current WDR found), then processingcontinues back to block 2606 for another loop iteration of processing.If 2614 determines a satisfactory WDR does not already exist in queue22, then block 2600 determines a new highest confidence WDR for this MS(FIG. 26B processing) using queue 22.

Thereafter, if block 2616 determines a WDR was not created (BESTWDRvariable=null) for the MS of FIG. 26A processing (by block 2600), thenprocessing continues back to block 2606. If block 2616 determines a WDRwas created (BESTWDR=WDR created by FIG. 26B) for the MS of FIG. 26Aprocessing by block 2600, then processing continues to block 2618 forpreparing FIG. 2F parameters and FIG. 2F processing is invoked with thenew WDR at block 2620 (for interface 1956) before continuing back toblock 2606. Parameters set at block 2618 are: WDRREF=a reference orpointer to the WDR completed at block 2600; DELETEQ=FIG. 26A locationqueue discard processing; and SUPER=FIG. 26A supervisory notificationprocessing.

Referring back to block 2610, if a worker thread termination request wasfound at queue 1980, then block 2622 decrements the worker thread countby 1 (using appropriate semaphore access (e.g. 1952-Sem)), and thread1952 processing terminates at block 2624. Block 2622 may also check the1952-Ct value, and signal the process 1952 parent thread that all workerthreads are terminated when 1952-Ct equals zero (0).

Alternate embodiments to FIG. 26A will have a pool of thread(s) 1952 perlocation technology (WDR field 1100 e) for specific WDR field(s)selective processing. FIG. 26A processing is shown to be generic withhandling all WDRs at block 2600.

FIG. 26B depicts a flowchart for describing a preferred embodiment ofprocessing for determining a highest possible confidence whereabouts,for example in ILM processing, such as processing of FIG. 26A block2600. Processing starts at block 2630, and continues to block 2632 wherevariables are initialized (BESTWDR=null, THIS_MS=null, REMOTE_MS=null).BESTWDR will reference the highest confidence WDR for whereabouts of theMS of FIG. 26B processing (i.e. this MS) upon return to FIG. 26A whenwhereabouts determination is successful, otherwise BESTWDR is set tonull (none found). THIS_MS points to an appropriately sorted list ofWDRs which were originated by this MS and are DLM originated (i.e.inserted by the DLM of FIG. 26B processing). REMOTE_MS points to anappropriately sorted list of WDRs which were originated by other MSs(i.e. from DLMs and/or ILMs and collected by the ILM of FIG. 26Bprocessing).

Thereafter, block 2634 peeks the WDR queue 22 (using interface 1954) formost recent WDRs by searching queue 22 for: confidence field 1100 dgreater than or equal to the confidence floor value, and a most recentdate/time stamp field 1100 b within a prescribed trailing period of timeof block 2634 search processing using a f(WTV) for the period. Forexample, block 2634 peeks the queue (i.e. makes a copy of all WDRs to aresult list for use if any found for subsequent processing, but does notremove the entry(s) from queue) for all WDRs which have confidence over75 and has been most recently inserted to queue 22 in the last 2seconds. It is recommended that the f(WTV) used here be some value lessthan or equal to the WTV (want to be ahead of curve, so may use apercentage (e.g. 90%)), but preferably not greater than a couple/fewseconds (depends on MS, MS applications, MS environment, whereaboutsdetermination related variables, etc).

In an alternative embodiment, thread(s) 1952 coordinate with each otherto know successes, failures or progress of their sister threads forautomatically adjusting the trailing f(WTV) period of timeappropriately. See “Alternative IPC Embodiments” below.

Thread 1952 is of less value to the MS when whereabouts are calculatedusing stale WDRs, or when not enough useful WDRs are considered. In analternate embodiment, a movement tolerance (e.g. user configured orsystem set (e.g. 3 meters)) is incorporated at the MS, or at service(s)used to locate the MS, for knowing when the MS has significantly moved(e.g. more than 3 meters) and how long it has been (e.g. 45 seconds)since last significantly moving. In this embodiment, the MS is aware ofthe period of time since last significantly moving and the f(WTV) is setusing the amount of time since the MS significantly moved (i.e.f(WTV)=as described above, or the amount of time since significantlymoving, whichever is greater). This way a large number of (perhaps moreconfident candidates) WDRs are searched in the time period when the MShas not significantly moved. Optional blocks 278 through 284 may havebeen incorporated to FIG. 2F for movement tolerance processing justdescribed, in which case the LWT is compared to the current date/time toadjust the WTV for the correct trailing period. In any case, all usefulWDRs are sought at block 2634 and placed into a list upon exit fromblock 2634.

Thereafter, block 2636 sets THIS_MS list and REMOTE_MS list sort keys tobe used at blocks 2644 and 2654. Blocks 2638 through 2654 willprioritize WDRs found at block 2634 depending on the sort keys made atblock 2636. A number of variables may be used to determine the best sortkeys, such as the time period used to peek at block 2634 and/or thenumber of entries in the WDR list returned by block 2634, and/or othervariables. When the time period of search is small (e.g. less than acouple seconds), lists (THIS_MS and REMOTE_MS) should be prioritizedprimarily by confidence (fields 1100 d) since any WDRs are valuable fordetermining whereabouts. This is the preferred embodiment.

When the time period is great, careful measure must be taken to ensurestale WDRs are not used (e.g. >few seconds, and not considering movementtolerance). Depending on decision embodiments, there will be preferredpriority order sort keys created at exit from block 2636, for example“key1/key2/key3” implies that “key1” is a primary key, “key2” is asecond order key, and “key3” is a third order key. A key such as“field-1100 b/field-1100 d/field-1100 f:signal-strength” would sort WDRsfirst by using date/time stamp fields 1100 b, then by confidence valuefields 1100 d (sorted within matching date/time stamp WDRs), then bysignal-strength field 1100 f sub-field values (sorted within matchingWDR confidences; no signal strength present=lowest priority). Anothersort key may be “field-1100 d/field-1100 b” for sorting WDRs first byusing confidence values, then by date/time stamps (sorted withinmatching WDR confidences). The same or different sort keys can be usedfor lists THIS_MS and REMOTE_MS. Any WDR data (fields or subfields) canbe sorted with a key, and sort keys can be of N order dimension suchthat “key1/key2/ . . . /keyN”. Whatever sort keys are used, block 2686will have to consider confidence versus being stale, relative to theWTV. In the preferred embodiment, the REMOTE_MS and THIS_MS lists areset with the same sort keys of “field-1100 d/field-1100 b” (i.e. peektime period used at block 2634 is less than 2 seconds) so thatconfidence is primary.

Thereafter, block 2638 gets the first (if any) WDR in the list returnedat block 2634 (also processes next WDR in list when encountered again inloop of blocks 2638 through 2654), and block 2640 checks to see if allWDRs have already been processed. If block 2640 finds that all WDRs havenot been processed, then block 2642 checks the WDR origination. If block2642 determines the WDR is one that originated from a remote MS (i.e. MSID does not match the MS of FIG. 26B processing), then block 2644inserts the WDR into the REMOTE_MS list using the desired sort key(confidence primary, time secondary) from block 2636, and processingcontinues to block 2638 for another loop iteration. If block 2642determines the WDR is one that originated from this MS (MS ID field 1100a matches the MS of FIG. 26B processing (e.g. this MS being a DLM at thetime of WDR creation (this MS ID=field 1100 a) or this MS being an ILMat the time of WDR creation (previous processing of FIG. 26A)), thenprocessing continues to block 2646 to determine how to process the WDRwhich was inserted by “this MS” for its own whereabouts.

Block 2646 accesses field 1100 f for data found there (e.g. FIGS. 2D and2E may have inserted useful TDOA measurements, even though DLMprocessing occurred; or FIG. 3C may have inserted useful TDOA and/or AOAmeasurements with reference station(s) whereabouts; or receiveprocessing may have inserted AOA and related measurements). Thereafter,if block 2648 determines presence of TDOA and/or AOA data, block 2650checks if reference whereabouts (e.g. FIG. 3C selected stationaryreference location(s)) is also stored in field 1100 f. If block 2650determines whereabouts information is also stored to field 1100 f, thenblock 2652 makes new WDR(s) from the whereabouts information containingat least the WDR Core and field 1100 f containing the AOA and/or TDOAinformation as though it were from a remote DLM or ILM. Block 2652 alsoperforms the expected result of inserting the WDR of loop processinginto the THIS_MS list using the desired sort key from block 2636.Processing then continues to block 2644 where the newly made WDR(s) isinserted into the REMOTE_MS list using the desired sort key (confidenceprimary, time secondary) from block 2636. Block 2644 continues back toblock 2638.

Referring back to block 2650, if it is determined that whereaboutsinformation was not present with the AOA and/or TDOA information offield 1100 f, then processing continues to block 2644 for inserting intothe REMOTE_MS list (appropriately with sort key from block 2636) thecurrently looped WDR from block 2634. In-range location technologyassociates the MS with the antenna (or cell tower) location, so thatfield 1100 c already contains the antenna (or cell tower) whereabouts,and the TDOA information was stored to determine how close the MS was tothe antenna (or cell tower) at the time. The WDR will be more useful inthe REMOTE_MS list, then if added to the THIS_MS list (see loop ofblocks 2660 through 2680). Referring back to block 2648, if it isdetermined that no AOA and/or TDOA information was in field 1100 f, thenprocessing continues to block 2654 for inserting the WDR into theTHIS_MS list (appropriately with sort key (confidence primary, timesecondary) from block 2636).

Block 2654 handles WDRs that originated from the MS of FIG. 26B (thisMS), such as described in FIGS. 2A through 9B, or results from previousFIG. 26A processing. Block 2644 maintains remote DLMs and/or ILMs (theirwhereabouts) to the REMOTE_MS list in hope WDRs contain useful field1100 f information for determining the whereabouts of the MS of FIG. 26Bprocessing. Block 2652 handles WDRs that originated from the MS of FIG.26B processing (this MS), but also processes fields from stationaryreferences used (e.g. FIG. 3C) by this MS which can be helpful as thoughthe WDR was originated by a remote ILM or DLM. Thus, block 2652 causesinserting to both lists (THIS_MS and REMOTE_MS) when the WDR containsuseful information for both. Blocks 2652, 2654 and 2644 cause theiterative loop of blocks 2660 through 2680 to perform ADLT using DLMsand/or ILMs. Alternate embodiments of blocks 2638 through 2654 may usepeek methodologies to sort from queue 22 for the REMOTE_MS and THIS_MSlists.

Referring back to block 2640, if it is determined that all WDRs in thelist from block 2634 have been processed, then block 2656 initializes aDISTANCE list and ANGLE list each to null, block 2658 sets a loopiteration pointer to the first entry of the prioritized REMOTE_MS list(e.g. first entry higher priority than last entry in accordance withsort key used), and block 2660 starts the loop for working with orderedWDRs of the REMOTE_MS list. Exit from block 2640 to block 2656 occurswhen the REMOTE_MS and THIS_MS lists are in the desired priority orderfor subsequent processing. Block 2660 gets the next (or first) REMOTE_MSlist entry for processing before continuing to block 2662. If block 2662determines all WDRs have not yet been processed from the REMOTE_MS list,then processing continues to block 2664.

Blocks 2664 and 2670 direct collection of all useful ILM triangulationmeasurements for TDOA, AOA, and/or MPT triangulation of this MS relativeknown whereabouts (e.g. other MSs). It is interesting to note that TDOAand AOA measurements (field 1100 f) may have been made from differentcommunications interfaces 70 (e.g. different wave spectrums), dependingon interfaces the MS has available (i.e. all can participate). Forexample, a MS with blue-tooth, WiFi and cellular phone connectivity(different class wave spectrums supported) can be triangulated using thebest available information (i.e. heterogeneous location technique).Examination of fields 1100 f in FIG. 17 can show wave spectrums (and/orparticular communications interfaces 70) inserted by receive processingfor what the MS supports. If block 2664 determines an AOA measurement ispresent (field 1100 f sub-field), then block 2666 appends the WDR to theANGLE list, and processing continues to block 2668. If block 2664determines an AOA measurement is not present, then processing continuesto block 2670. If block 2670 determines a TDOA measurement is present(field 1100 f sub-field), then block 2672 appends the WDR to theDISTANCE list, and processing continues to block 2674. Block 2674 usesWDRs for providing at least an in-range whereabouts of this MS byinserting to the THIS_MS list in sorted confidence priority order (e.g.highest confidence first in list, lowest confidence at end of list).Block 2674 continues to block 2668. Block 2674 may cause duplicateWDR(s) inserted to the THIS_MS list, but this will have no negativeeffect on selected outcome.

Block 2668 compares the ANGLE and DISTANCE lists constructed thus farfrom loop processing (blocks 2660 through 2682) with minimumtriangulation requirements (e.g. see “Missing Part Triangulation (MPT)”above). Three (3) sides, three (3) angles and a side, and other knowntriangular solution guides will also be compared. Thereafter, if block2676 determines there is still not enough data to triangulatewhereabouts of this MS, then processing continues back to block 2660 forthe next REMOTE_MS list entry, otherwise block 2678 maximizes diversityof WDRs to use for triangulating. Thereafter, block 2680 uses thediversified DISTANCE and ANGLE lists to perform triangulation of thisMS, block 2682 inserts the newly determined WDR into the THIS_MS list insort key order, and continues back to block 2660. Block 2680 will useheterogeneous (MPT), TDOA and/or AOA triangulation on ANGLE and DISTANCElists for determining whereabouts.

Block 2682 preferably keeps track of (or checks THIS_MS for) what it hasthus far determined whereabouts for in this FIG. 26B thread processingto prevent inserting the same WDR to THIS_MS using the same REMOTE_MSdata. Repeated iterations of blocks 2676 through 2682 will see the samedata from previous iterations and will use the best of breed data inconjunction with each other at each iteration (in current threadcontext). While inserting duplicates to THIS_MS at block 2682 does notcause failure, it may be avoided for performance reasons. Duplicateinsertions are preferably avoided at block 2674 for performance reasonsas well, but they are again not harmful. Block 2678 preferably keepstrack of previous diversity order in this FIG. 26B thread processing topromote using new ANGLE and DISTANCE data in whereabouts determinationat block 2680 (since each iteration is a superset of a previousiteration (in current thread context)). Block 2678 promotes using WDRsfrom different MSs (different MS IDs), and from MSs located atsignificantly different whereabouts (e.g. to maximize surrounded-ness),preferably around the MS of FIG. 26B processing. Block 2678 preferablyuses sorted diversity pointer lists so as to not affect actual ANGLE andDISTANCE list order. The sorted pointer lists provide pointers toentries in the ANGLE and DISTANCE lists for a unique sorted ordergoverning optimal processing at block 2680 to maximize unique MSs andsurrounded-ness, without affecting the lists themselves (like a SQLdatabase index). Different embodiments of blocks 2678 through 2682should minimize inserting duplicate WDRs (for performance reasons) toTHIS_MS which were determined using identical REMOTE_MS list data. Block2682 causes using ADLT at blocks 2684 through 2688 which uses the bestof breed whereabouts, either as originated by this MS maintained inTHIS_MS list up to the thread processing point of block 2686, or asoriginated by remote MSs (DLMs and/or ILMs) processed by blocks 2656through the start of block 2684.

Referring back to block 2662, if it is determined that all WDRs in theREMOTE_MS list have been processed, then block 2684 sets the BESTWDRreference to the head of THIS_MS (i.e. BESTWDR references first WDR inTHIS_MS list which is so far the best candidate WDR (highest confidence)for this MS whereabouts, or null if the list is empty). It is possiblethat there are other WDRs with matching confidence adjacent to thehighest confidence entry in the THIS_MS list. Block 2684 continues toblock 2686 for comparing matching confidence WDRs, and if there arematches, then breaking a tie between WDRs with matching confidence byconsulting any other WDR field(s) (e.g. field 1100 f signal strength, orlocation technology field 1100 e, etc). If there is still a tie betweena plurality of WDRs, then block 2686 may average whereabouts to theBESTWDR WDR using the matching WDRs. Thereafter processing continues toblock 2688 where the BESTWDR is completed, and processing terminates atblock 2690. Block 2688 also frees resources (if any) allocated by FIG.26B processing (e.g. lists). Blocks 2686 through 2688 result in settingBESTWDR to the highest priority WDR (i.e. the best possible whereaboutsdetermined). It is possible that FIG. 26B processing causes a duplicateWDR inserted to queue 22 (at block 2620) for this MS whereaboutsdetermination, but that is no issue except for impacting performance toqueue 22. An alternate embodiment to queue 22 may define a unique indexfor erring out when inserting a duplicate to prevent frivolous duplicateentries, or block 2688 will incorporate processing to eliminate thechance of inserting a WDR of less use than what is already contained atqueue 22. Therefore, block 2688 may include processing for ensuring aduplicate will not be inserted (e.g. null the BESTWDR reference) priorto returning to FIG. 26A at block 2690.

Averaging whereabouts at block 2686 occurs only when there are WDRs atthe head of the list with a matching highest confidence value and stilltie in other WDR fields consulted, yet whereabouts information isdifferent. In this case, all matching highest confidence whereabouts areaveraged to the BESTWDR to come up with whereabouts in light of allmatching WDRs. Block 2686 performs ADLT when finalizing a singlewhereabouts (WDR) using any of the whereabouts found in THIS_MS (whichmay contain at this point DLM whereabouts originated by this MS and/orwhereabouts originated by remote DLMs and/or ILMs). Block 2686 must becognizant of sort keys used at blocks 2652 and 2654 in case confidenceis not the primary key (time may be primary).

If no WDRs were found at block 2634, or no THIS_MS list WDRs were foundat blocks 2652 and 2654, and no REMOTE_MS list entries were found atblock 2644; or no THIS_MS list WDRs were found at blocks 2652 and 2654,and no REMOTE_MS list entries were found useful at blocks 2664 and/or2670; then block 2684 may be setting BESTWDR to a null reference (i.e.none in list) in which case block 2686 does nothing. Hopefully, at leastone good WDR is determined for MS whereabouts and a new WDR is insertedfor this MS to queue 22, otherwise a null BESTWDR reference will bereturned (checked at block 2616). See FIG. 11A descriptions. If BESTWDRis not null, then fields are set to the following upon exit from block2688:

MS ID field 1100 a is preferably set with: MS ID of MS of FIG. 26Bprocessing.DATE/TIME STAMP field 1100 b is preferably set with: Date/time stamp ofblock 2688 processing.LOCATION field 1100 c is preferably set with: Resulting whereaboutsafter block 2688 completion.CONFIDENCE field 1100 d is preferably set with: WDR Confidence atTHIS_MS list head.LOCATION TECHNOLOGY field 1100 e is preferably set with: “mM TDOATriangulation”, “mM AOA Triangulation”, “mM MPT Triangulation” or “mMin-range”, as determined by the WDRs inserted to MS LIST at blocks 2674and 2682. The originator indicator is set to ILM.LOCATION REFERENCE INFO field 1100 f is preferably set with: null (notset), but may be set with contributing data for analysis of queue 22provided it is marked for being overlooked by future processing ofblocks 2646 and 2648 (e.g. for debug purpose).COMMUNICATIONS REFERENCE INFO field 1100 g is preferably set with: null(not set).SPEED field 1100 h is preferably set with: Block 2688 may compareprioritized entries and their order of time (field 1100 b) in THIS_MSlist for properly setting this field, if possible.HEADING field 1100 i is preferably set with: null (not set). Block 2688may compare prioritized entries and their order of time (field 1100 b)in THIS_MS list for properly setting this field, if possible.ELEVATION field 1100 j is preferably set with: Field 1100 j of BESTWDR(may be averaged if WDR tie(s)), if available.APPLICATION FIELDS field 1100 k is preferably set with: Field(s) 1100 kfrom BESTWDR or tie(s) thereof from THIS_MS. An alternate embodimentwill add, alter, or discard data (with or without date/time stamps) hereat the time of block 2688 processing.CORRELATION FIELD 1100 m is preferably set with: Not Applicable (i.e.not maintained to queue 22).SENT DATE/TIME STAMP field 1100 n is preferably set with: Not Applicable(i.e. not maintained to queue 22).RECEIVED DATE/TIME STAMP field 1100 p is preferably set with: NotApplicable (i.e. not maintained to queue 22).

Block 2680 determines whereabouts using preferred guidelines, such aswhereabouts determined never results in a confidence value exceeding anyconfidence value used to determine whereabouts. Some embodiments willuse the mean (average) of confidence values used, some will use thehighest, and some the lowest of the WDRs used. Preferred embodimentstend to properly skew confidence values to lower values as theLN-Expanse grows away from region 1022. Blocks 2668 through 2680 mayconsult any of the WDR fields (e.g. field 1100 f sub-fields yaw, pitch,roll; speed, heading, etc) to deduce the most useful WDR inputs fordetermining an optimal WDR for this MS whereabouts.

Alternative IPC Embodiments

Thread(s) 1952 are started for every WDR collected from remote MSs.Therefore, it is possible that identical new WDRs are inserted to queue22 using the same WDR information at blocks 2634 of simultaneouslyexecuting threads 1952, but this will not cause a problem since at leastone will be found when needed, and duplicates will be pruned togetherwhen appropriate. Alternative embodiments provide IPC (InterprocessCommunications Processing) coordination between 1952 threads for higherperformance processing, for example:

-   -   As mentioned above, thread(s) 1952 can coordinate with each        other to know successes, failures or progress of their sister        1952 thread(s) for automatically adjusting the trailing f(WTV)        period of time appropriately. The f(WTV) period of time used at        block 2634 would be semaphore accessed and modified (e.g.        increased) for another 1952 thread when a previous 1952 thread        was unsuccessful in determining whereabouts (via semaphore        accessed thread outcome indicator). After a successful        determination, the f(WTV) period of time could be reset back to        the smaller window. One embodiment of increasing may start with        10% of the WTV, then 20% at the next thread, 30% at the next        thread, up to 90%, until a successful whereabouts is determined.        After successful whereabouts determination, a reset to its        original starting value is made.    -   A semaphore accessed thread 1952 busy flag is used for        indicating a certain thread is busy to prevent another 1952        thread from doing the same or similar work. Furthermore, other        semaphore protected data for what work is actually being        performed by a thread can be informative to ensure that no        thread 1952 starts for doing duplicated effort.    -   Useful data of statistics 14 may be appropriately accessed by        thread(s) 1952 for dynamically controlling key variables of FIG.        26B processing, such as the search f(WTV) time period, sort keys        used, when to quit loop processing (e.g. on first successful        whereabouts determination at block 2680), surrounded-ness        preferences, etc. This can dynamically change the FIG. 26B logic        from one thread to another for desired results.

FIG. 26B continues processing through every WDR retrieved at block 2634.An alternative embodiment will terminate processing after finding thefirst (which is highest priority data supported) successfultriangulation at block 2682.

FIG. 27 depicts a flowchart for describing a preferred embodiment ofqueue prune processing. Queue pruning is best done on an interim basisby threads which may insert to the queue being pruned. In an alternateembodiment, a background asynchronous thread will invoke FIG. 27 forperiodic queue pruning to ensure no queue which can grow becomes toolarge. The Prune Queues procedure starts at block 2702 and continues toblock 2704 where parameters passed by a caller for which queue(s) (WDRand/or CR) to prune are determined. Thereafter, if block 2706 determinesthat the caller wanted to prune the WDR queue 22, block 2708appropriately prunes the queue, for example discarding old entries usingfield 1100 b, and processing continues to block 2710. If block 2706determines that the caller did not want to prune the WDR queue 22, thenprocessing continues to block 2710. If block 2710 determines that thecaller wanted to prune the CR queue 1990, block 2712 appropriatelyprunes the queue, for example discarding old entries using field 2450 a,and processing continues to block 2714. If block 2710 determines thatthe caller did not want to prune the CR queue 1990, then processingcontinues to block 2714. Block 2714 appropriately returns to the caller.

The current design for queue 1980 does not require FIG. 27 to prune it.Alternative embodiments may add additional queues for similarprocessing. Alternate embodiments may use FIG. 27 like processing toprune queues 24, 26, or any other queue under certain systemcircumstances. Parameters received at block 2704 may also include how toprune the queue, for example when using different constraints for whatindicates entry(s) for discard.

FIG. 28 depicts a flowchart for describing a preferred embodiment of MStermination processing. Depending on the MS, there are many embodimentsof processing when the MS is powered off, restarted, rebooted,reactivated, disabled, or the like. FIG. 28 describes the blocks ofprocessing relevant to the present disclosure as part of thattermination processing. Termination processing starts at block 2802 andcontinues to block 2804 for checking any DLM roles enabled andappropriately terminating if any are found (for example as determinedfrom persistent storage variable DLMV). Block 2804 may cause thetermination of thread(s) associated with enabled DLM role(s) for DLMprocessing above (e.g. FIGS. 2A through 9B). Block 2804 may invokeAPI(s), disable flag(s), or terminate as is appropriate for DLMprocessing described above. Such terminations are well known in the artof prior art DLM capabilities described above. Block 2804 continues toblock 2806.

Blocks 2806 through 2816 handle termination of all processes/threadsassociated with the ILMV roles so there is no explicit ILMV checkrequired. Block 2806 initializes an enumerated process name array forconvenient processing reference of associated process specific variablesdescribed in FIG. 19, and continues to block 2808 where the first memberof the set is accessed for subsequent processing. The enumerated set ofprocess names has a prescribed termination order for MS architecture1900. Thereafter, if block 2810 determines the process identifier (i.e.19 xx-PID such that 19 xx is 1902, 1912, 1922, 1932, 1942, 1952 in aloop iteration of blocks 2808 through 2816) is greater than 0 (e.g. thisfirst iteration of 1912-PID>0 implies it is to be terminated here; alsoimplies process 1912 is enabled as used in FIGS. 14A, 28, 29A and 29B),then block 2812 prepares parameters for FIG. 29B invocation, and block2814 invokes (calls) the procedure of FIG. 29B to terminate the process(of this current loop iteration (19 xx)). Block 2812 prepares the secondparameter in accordance with the type of 19 xx process. If the process(19 xx) is one that is slave to a queue for dictating its processing(i.e. blocked on queue until queue entry present), then the secondparameter (process type) is set to 0 (directing FIG. 29A processing toinsert a special termination queue entry to be seen by worker thread(s)for terminating). If the process (19 xx) is one that is slave to a timerfor dictating its processing (i.e. sleeps until it is time to process),then the second parameter (process type) is set to the associated 19xx-PID value (directing FIG. 29B to use in killing/terminating the PIDin case the worker thread(s) are currently sleeping). Block 2814 passesthe process name and process type as parameters to FIG. 29B processing.Upon return from FIG. 29B, block 2814 continues to block 2816. If block2810 determines that the 19 xx process is not enabled, then processingcontinues to block 2816. Upon return from FIG. 29B processing, theprocess is terminated and the associated 19 xx-PID variable is alreadyset to 0 (see blocks 2966, 2970, 2976 and 2922).

Block 2816 checks to see if all process names of the enumerated set (19xx) have been processed (iterated) by blocks 2808 through 2816. If block2816 determines that not all process names in the set have beenprocessed (iterated), then processing continues back to block 2808 forhandling the next process name in the set. If block 2816 determines thatall process names of the enumerated set were processed, then block 2816continues to block 2818.

Block 2818 destroys semaphore(s) created at block 1220. Thereafter,block 2820 destroys queue(s) created at block 1218 (may have to removeall entries first in some embodiments), block 2822 saves persistentvariables to persistent storage (for example to persistent storage 60),block 2824 destroys shared memory created at block 1212, and block 2826checks the NTP use variable (saved prior to destroying shared memory atblock 2824).

If block 2826 determines NTP is enabled, then block 2828 terminates NTPappropriately (also see block 1612) and processing continues to block2830. If block 2826 determines NTP was not enabled, then processingcontinues to block 2830. Block 2828 embodiments are well known in theart of NTP implementations. Block 2828 may cause terminating ofthread(s) associated with NTP use.

Block 2830 completes LBX character termination, then block 2832completes other character 32 termination processing, and FIG. 28processing terminates thereafter at block 2834. Depending on whatthreads were started at block 1240, block 2830 may terminate thelisten/receive threads for feeding queue 26 and the send threads forsending data inserted to queue 24. Depending on what threads werestarted at block 1206, block 2832 may terminate the listen/receivethreads for feeding queue 26 and the send threads for sending datainserted to queue 24 (i.e. other character 32 threads altered to causeembedded CK processing). Upon encounter of block 2834, the MS isappropriately terminated for reasons at set forth above for invokingFIG. 28.

With reference now to FIG. 29B, depicted is a flowchart for describing apreferred embodiment of a procedure for terminating a process started byFIG. 29A. When invoked by a caller, the procedure starts at block 2952and continues to block 2954 where parameters passed are determined.There are two parameters: the process name to terminate, and the type ofprocess to terminate. The type of process is set to 0 for a processwhich has worker threads which are a slave to a queue. The type ofprocess is set to a valid O/S PID when the process worker threads areslave to a timer.

Thereafter, if block 2956 determines the process type is 0, then block2958 initializes a loop variable J to 0, and block 2960 inserts aspecial termination request queue entry to the appropriate queue for theprocess worker thread to terminate. See FIG. 19 discussions for thequeue inserted for which 19 xx process name.

Thereafter, block 2962 increments the loop variable by 1 and block 2964checks if all process prescribed worker threads have been terminated.Block 2964 accesses the 19 xx-Max (e.g. 1952-Max) variable from sharedmemory using a semaphore for determining the maximum number of threadsto terminate in the process worker thread pool. If block 2964 determinesall worker threads have been terminated, processing continues to block2966 for waiting until the 19 xx-PID variable is set to disabled (e.g.set to 0 by block 2922), and then to block 2978 which causes return tothe caller. Block 2966 uses a preferred choice of waiting described forblocks 2918 and 2920. The 19 xx process (e.g. 1952) will have its 19xx-PID (e.g. 1952-PID) variable set at 0 (block 2922) when the processterminates. In some embodiments, the waiting methodology used at block2966 may use the 19 xx-PID variable, or may be signaled by the lastterminating worker thread, or by block 2922.

If block 2964 determines that not all worker threads have beenterminated yet, then processing continues back to block 2960 to insertanother special termination request queue entry to the appropriate queuefor the next process worker thread to terminate. Blocks 2960 through2964 insert the proper number of termination queue entries to the samequeue so that all of the 19 xx process worker threads terminate.

Referring back to block 2956, if it is determined the process type isnot 0 (i.e. is a valid O/S PID), then block 2968 inserts a special WDRqueue 22 entry enabling a queue peek for worker thread termination. Thereader will notice that the process termination order of block 2806ensures processes which were slaves to the WDR queue 22 have alreadybeen terminated. This allows processes which are slaves to a timer tosee the special termination queue entry inserted at block 2968 since nothreads (which are slaves to queue) will remove it from queue 22.Thereafter, block 2970 waits until the 19 xx process name (parameter)worker threads have been terminated using a preferred choice of waitingdescribed for blocks 2918 and 2920. The 19 xx process (e.g. 1902) willhave its 19 xx-PID (e.g. 1902-PID) variable set at 0 (block 2922) whenthe process terminates. In some embodiments, the waiting methodologyused at block 2970 may use the 19 xx-PID variable, or may be signaled bythe last terminating worker thread, or by block 2922. Block 2970 alsopreferably waits for a reasonable timeout period in anticipation ofknown sleep time of the 19 xx process being terminated, for cases whereanticipated sleep times are excessive and the user should not have towait for lengthy FIG. 28 termination processing. If the timeout occursbefore the process is indicated to be terminated, then block 2970 willcontinue to block 2972. Block 2970 also continues to block 2972 when theprocess has successfully terminated.

If block 2972 determines the 19 xx process did terminate, the caller isreturned to at block 2978 (i.e. 19 xx-PID already set to disabled (0)).If block 2972 determines the 19 xx process termination timed out, thenblock 2974 forces an appropriate O/S kill to the PID thereby forcingprocess termination, and block 2976 sets the 19 xx-PID variable fordisabled (i.e. process 19 xx was terminated). Thereafter, block 2978causes return to the caller.

There are many embodiments for setting certain queue entry field(s)identifying a special queue termination entry inserted at blocks 2960and 2968. Some suggestions: In the case of terminating thread(s) 1912,queue 26 insertion of a WDR preferably sets the MS ID field with a valuethat will never appear in any other case except a termination request(e.g. −100). In the case of terminating thread(s) 1902, 1922 and 1952,queue 22 insertion of a WDR preferably sets the MS ID field with a valuethat will never appear in any other case except a termination request(e.g. −100). In the case of terminating thread(s) 1942, queue 26insertion of a WDR request preferably sets the MS ID field with a valuethat will never appear in any other case except a termination request(e.g. −100). In the case of terminating thread(s) 1932, queue 1980insertion of a thread request queue record 2400 preferably sets field2400 a with a value that will never appear in any other case except atermination request (e.g. −100). Of course, any available field(s) canbe used to indicate termination to particular thread(s)).

Terminating threads of processing in FIG. 29B has been presented from asoftware perspective, but there are hardware/firmware thread embodimentswhich may be terminated appropriately to accomplish the samefunctionality. If the MS operating system does not have an interface forkilling the PID at block 2974, then blocks 2972 through 2976 can beeliminated for relying on a FIG. 28 invocation timeout (incorporated forblock 2814) to appropriately rob power from remaining thread(s) ofprocessing.

An ILM has many methods and systems for knowing its own location. LBXdepends on MSs maintaining their own whereabouts. No service is requiredto maintain the whereabouts of MSs in order to accomplish novelfunctionality.

Other Embodiments

As mentioned above, architecture 1900 provides a set of processes whichcan be started or terminated for desired functionality. Thus,architecture 1900 provides a palette from which to choose desireddeployment methods for an LN expanse.

In some embodiments, all whereabouts information can be pushed to expandthe LN-expanse. In such embodiments, the palette of processes to choosefrom includes at least process 1902, process 1912 and process 1952.Additionally, process 1932 would be required in anticipation ofLN-expanse participating data processing systems having NTP disabled orunavailable. Additionally, process 1922 could be used for ensuringwhereabouts are timely (e.g. specifically using all blocks except 2218through 2224). Depending on DLM capability of MSs in the LN-expanse, afurther subset of processes 1902, 1912, 1952 and 1932 may apply.Thread(s) 1902 beacon whereabouts information, regardless of the MSbeing an affirmifier or pacifier.

In some embodiments, all whereabouts information can be pulled to expandthe LN-expanse. In such embodiments, the palette of processes to choosefrom includes at least process 1922 (e.g. specifically using all blocksexcept 2226 and 2228), process 1912, process 1952 and process 1942.Additionally, process 1932 would be required in anticipation ofLN-expanse participating data processing systems having NTP disabled orunavailable. Depending on DLM capability of MSs in the LN-expanse, afurther subset of processes 1922, 1912, 1952, 1942 and 1932 may apply.

There are many embodiments derived from architecture 1900. Essentialcomponents are disclosed for deployment varieties. In communicationsprotocols which acknowledge a transmission, processes 1932 may not berequired even in absence of NTP use. A sending MS appends a sentdate/time stamp (e.g. field 1100 n) on its time scale to outbound data1302 and an acknowledging MS (or service) responds with the sentdate/time stamp so that when the sending MS receives it (receives data1302 or 1312), the sending MS (now a receiving MS) calculates a TDOAmeasurement by comparing when the acknowledgement was received and whenit was originally sent. Appropriate correlation outside of process 1932deployment enables the sending MS to know which response went with whichdata 1302 was originally sent. A MS can make use of 19 xx processes asis appropriate for functionality desired.

In push embodiments disclosed above, useful summary observations aremade. Service(s) associated with antennas periodically broadcast(beacon) their reference whereabouts (e.g. WDR information) for beingreceived by MSs in the vicinity. When such services are NTP enabled, thebroadcasts include a sent date/time stamp (e.g. field 1100 n). Uponreceipt by a NTP enabled MS in the vicinity, the MS uses the date/timestamp of MS receipt (e.g. 1100 p) with the date/time stamp of when sent(e.g. field 1100 n) to calculate a TDOA measurement. Known wave spectrumvelocity can translate to a distance. Upon receipt of a plurality ofthese types of broadcasts from different reference antennas, the MS cantriangulate itself for determining its whereabouts relative knownwhereabouts of the reference antennas. Similarly, reference antennas arereplaced by other NTP enabled MSs which similarly broadcast theirwhereabouts. A MS can be triangulated relative a mixture of referenceantennas and other NTP enabled MSs, or all NTP enabled MSs. Stationaryantenna triangulation is accomplished the same way as triangulating fromother MSs. NTP use allows determining MS whereabouts using triangulationachievable in a single unidirectional broadcast of data (1302 or 1312).Furthermore, reference antennas (service(s)) need not communicate newdata 1312, and MSs need not communicate new data 1302. Usualcommunications data 1312 are altered with a CK 1314 as described above.Usual communications data 1302 are altered with a CK 1304 as describedabove. This enables a MS with not only knowing there are nearbyhotspots, but also where all parties are located (including the MS).Beaconing hotspots, or other broadcasters, do not need to know who youare (the MS ID), and you do not need to know who they are in order to belocated. Various bidirectional correlation embodiments can always beused for TDOA measurements.

In pull embodiments disclosed above, data processing systems wanting todetermine their own whereabouts (requestors) broadcast their requests(e.g. record 2490). Service(s) or MSs (responders) in the vicinityrespond. When responders are NTP enabled, the responses include a sentdate/time stamp (e.g. field 1100 n) that by itself can be used tocalculate a TDOA measurement if the requestor is NTP enabled. Uponreceipt by a requestor with no NTP, the requestor uses the date/timestamp of a correlated receipt (e.g. 1100 p) with the date/time stamp ofwhen sent (e.g. fields 1100 n or 2450 a) to calculate a time duration(TDOA) for whereabouts determination, as described above. New data orusual communications data applies as described above.

If NTP is available to a data processing system, it should be usedwhenever communicating date/time information (e.g. NTP bit of field 1100b, 1100 n or 1100 p) so that by chance a receiving data processing isalso NTP enabled, a TDOA measurement can immediately be taken. In cases,where either the sending (first) data processing system or receiving(second) data processing system is not NTP enabled, then the calculatingdata processing system wanting a TDOA measurement will need to calculatea sent and received time in consistent time scale terms. This includes acorrelated bidirectional communications data flow to properly determineduration in time terms of the calculating data processing system. In asend initiated embodiment, a first (sending) data processing systemincorporates a sent date/time stamp (e.g. fields 1100 n or 2450 a) anddetermines when a correlated response is received to calculate the TDOAmeasurement (both times in terms of the first (sending) data processingsystem). In another embodiment, a second (receiving) data processingsystem receives a sent date/time stamp (e.g. field 1100 n) and thenbecomes a first (sending) data processing as described in the sendinitiated embodiment. Whatever embodiment is used, it is beneficial inthe LN-expanse to minimize communications traffic.

The NTP bit in date/time stamps enables optimal elegance in theLN-expanse for taking advantage of NTP when available, and usingcorrelated transmissions when it is not. A NTP enabled MS is somewhat ofa chameleon in using unidirectional data (1302 or 1312 received) todetermine whereabouts relative NTP enabled MS(s) and/or service(s), andthen using bidirectional data (1302/1302 or 1302/1312) relative MS(s)and/or service(s) without NTP. A MS is also a chameleon when consideringit may go in and out of a DLM or ILM identity/role, depending on whatwhereabouts technology is available at the time.

The MS ID (or pseudo MS ID) in transmissions is useful for a receivingdata processing system to target a response by addressing the responseback to the MS ID. Targeted transmissions target a specific MS ID (orgroup of MS IDs), while broadcasting is suited for reaching as many MSIDs as possible. Alternatively, just a correlation is enough to target adata source.

In some embodiments where a MS is located relative another MS, this isapplicable to something as simple as locating one data processing systemusing the location of another data processing system. For example, thewhereabouts of a cell phone (first data processing system) is used tolocate an in-range automotive installed (second) data processing systemfor providing new locational applications to the second data processingsystem (or visa-versa). In fact, the second data processing may bedesigned for using the nearby first data processing system fordetermining its whereabouts. Thus, as an MS roams, in the know of itsown whereabouts, the MS whereabouts is shared with nearby dataprocessing systems for new functionality made available to those nearbydata processing systems when they know their own whereabouts (byassociating to the MS whereabouts). Data processing systems incapable ofbeing located are now capable of being located, for example locating adata processing equipped shopping cart with the location of an MS, orplurality of MSs.

Architecture 1900 presents a preferred embodiment for IPC (InterprocessCommunications Processing), but there are other embodiments forstarting/terminating threads, signaling between processes, semaphorecontrols, and carrying out present disclosure processing withoutdeparting from the spirit and scope of the disclosure. In someembodiments, threads are automatically throttled up or down (e.g.1952-Max) per unique requirements of the MS as determined by how oftenthreads loop back to find an entry already waiting in a queue. Ifthread(s) spend less time blocked on queue, they can be automaticallythrottled up. If thread(s) spend more time blocked on queue, they can beautomatically throttled down. Timers can be associated with queueretrieval to keep track of time a thread is blocked.

LBX history 30 preferably maintains history information of key points inprocessing where history information may prove useful at a future time.Some of the useful points of interest may include:

-   -   Interim snapshots of permissions 10 (for documenting who had        what permissions at what time) at block 1478;    -   Interim snapshots of charters 12 (for documenting charters in        effect at what times) at block 1482;    -   Interim snapshots of statistics 14 (for documenting useful        statistics worthy of later browse) at block 1486;    -   Interim snapshots of service propagation data of block 1474;    -   Interim snapshots of service informant settings of block 1490;    -   Interim snapshots of LBX history maintenance/configurations of        block 1494;    -   Interim snapshots of a subset of WDR queue 22 using a configured        search criteria;    -   Interim snapshots of a subset of Send queue 24 using a        configured search criteria;    -   Interim snapshots of a subset of Receive queue 26 using a        configured search criteria;    -   Interim snapshots of a subset of PIP data 8;    -   Interim snapshots of a subset of data 20;    -   Interim snapshots of a subset of data 36;    -   Interim snapshots of other resources 38;    -   Trace, debug, and/or dump of any execution path subset of        processing flowcharts described; and/or    -   Copies of data at any block of processing in any flowchart        heretofore described.        Entries in LBX history 30 preferably have entry qualifying        information including at least a date/time stamp of when added        to history, and preferably an O/S PID and O/S TID (Thread        Identifier) associated with the logged entry, and perhaps        applicable applications involved (e.g. see fields 1100 k).        History 30 may also be captured in such a way there are        conditions set up in advance (at block 1494), and when those        conditions are met, applicable data is captured to history 30.        Conditions can include terms that are MS system wide, and when        the conditions are met, the data for capture is copied to        history. In these cases, history 30 entries preferably include        the conditions which were met to copy the entry to history.        Depending on what is being kept to history 30, this can become a        large amount of information. Therefore, FIG. 27 can include new        blocks for pruning history 30 appropriately. In another        embodiment, a separate thread of processing has a sleeper loop        which when awake will prune the history 30 appropriately, either        in its own processing or by invoking new FIG. 27 blocks for        history 30. A parameter passed to processing by block 2704 may        include how to prune the history, including what data to prune,        how old of data to prune, and any other criteria appropriate for        maintaining history 30. In fact, any pruning by FIG. 27 may        include any reasonable parameters for how to prune particular        data of the present disclosure.

Location applications can use the WDR queue for retrieving the mostrecent highest confidence entry, or can access the single instance WDRmaintained (or most recent WDR of block 289 discussed above). Optimally,applications are provided with an API that hides what actually occurs inongoing product builds, and for ensuring appropriate semaphore access tomulti-threaded accessed data.

Correlation processing does not have to cause a WDR returned. There areembodiments for minimal exchanges of correlated sent date/time stampsand/or received date/time stamps so that exchanges are very efficientusing small data exchanges. Correlation of this disclosure was providedto show at least one solution, with keeping in mind that there are manyembodiments to accomplish relating time scales between data processingsystems.

Architecture 1900 provides not only the foundation for keeping an MSabreast of its whereabouts, but also the foundation upon which to buildLBX nearby functionality. Whereabouts of MSs in the vicinity aremaintained to queue 22. Permissions 10 and charters 12 can be used forgoverning which MSs to maintain to queue 22, how to maintain them, andwhat processing should be performed. For example, MS user Joe wants toalert MS user Sandy when he is in her vicinity, or user Sandy wants tobe alerted when Joe is in her vicinity. Joe configures permissionsenabling Sandy to be alerted with him being nearby, or Sandy configuredpermissions for being alerted. Sandy accepts the configuration Joe made,or Joe accepts the configuration Sandy made. Sandy's queue 22 processingwill ensure Joe's WDRs are processed uniquely for desired functionality.

FIG. 8C was presented in the context of a DLM, however architecture 1900should be applied for enabling a user to manually request to be locatedwith ILM processing if necessary. Blocks 862 through 870 are easilymodified to accomplish a WDR request (like blocks 2218 through 2224). Inkeeping with current block descriptions, block 872 would become a newseries of blocks for handling the case when DLM functionality wasunsuccessful. New block 872-A would broadcast a WDR request solicitingresponse (see blocks 2218 through 2224). Thereafter, a block 872-B wouldwait for a brief time, and subsequently a block 872-C would check to seeif whereabouts have been determined (e.g. check queue 22). Thereafter,if a block 872-D determines whereabouts were not determined, an errorcould be provided to the user, otherwise the MS whereabouts weresuccessfully determined and processing continues to block 874.Applications that may need whereabouts can now be used. There arecertainly emergency situations where a user may need to rely on otherMSs in the vicinity for being located.

To maintain modularity in interfaces to queues 24 and 26, parameters maybe passed rather than having the modular send/receive processing accessfields of application records. When WDRs are “sent”, the WDR will betargeted (e.g. field 1100 a), perhaps also with field 1100 f indicatingwhich communications interface to send on (e.g. MS has plurality ofcomm. interfaces 70). When WDRs are “broadcast” (e.g. null MS ID), theWDR is preferably outbound on all available comm. interfaces 70), unlessfield 1100 f indicates to target a comm. interface. Analogously, whenWDR requests are “sent”, the request will be targeted (e.g. field 2490a), perhaps also with field 2490 d indicating which communicationsinterface to send on (e.g. MS has plurality of comm. interfaces 70).When WDR requests are “broadcast” (e.g. null MS ID), the WDR ispreferably outbound on all available comm. interfaces 70), unless field1100 f indicates to target a comm. interface.

Fields 1100 m, 1100 n, 1100 p, 2490 b and 2490 c are also of interest tothe transport layer. Any subset, or all, of transport related fields maybe passed as parameters to send processing, or received as parametersfrom receiving processing to ensure send and receive processing isadaptable using pluggable transmission/reception technologies.

An alternate embodiment to the BESTWDR WDR returned by FIG. 26Bprocessing may be set with useful data for reuse toward a future FIG.26B processing thread whereabouts determination. Field 1100 f (see pg.168) can be set with useful data for that WDR to be in turn used at asubsequent whereabouts determination of FIG. 26B. This is referred to asRecursive Whereabouts Determination (RWD) wherein ILMs determine WDRsfor their whereabouts and use them again for calculating futurewhereabouts (by populating useful TDOA, AOA, MPT and/or whereaboutsinformation to field 1100 f).

An alternate embodiment may store remote MS movement tolerances (if theyuse one) to WDR field 1100 f so the receiving MS can determine how staleare other WDRs in queue 22 from the same MS, for example when gatheringall useful WDRs to start with in determining whereabouts of FIG. 26Bprocessing (e.g. block 2634). Having movement tolerances in effect mayprove useful for maximizing useful WDRs used in determining awhereabouts (FIG. 26B processing).

While various embodiments of the present disclosure have been describedabove, it should be understood that they have been presented by way ofexample only, and not limitation. Thus, the breadth and scope of thepresent disclosure should not be limited by any of the above-describedexemplary embodiments, but should be defined only in accordance with thefollowing claims and their equivalents.

What is claimed is:
 1. A program product that, when executed, causesoperations comprising: receiving, by a mobile data processing system, aplurality of wireless data records from a plurality of data processingsystems determined by the mobile data processing system to have been ina wireless vicinity of the mobile data processing system, wherein theplurality of wireless data records are received by the mobile dataprocessing system with a purely peer to peer interaction asynchronouslyfrom any user interface of the mobile data processing system; storing,by the mobile data processing system, searchable information for eachrecord of the plurality of wireless data records from the plurality ofdata processing systems in a historical collection for query with aconditional match specification, wherein the conditional matchspecification is for comparing to at least one data field of thesearchable information for the each record in the historical collectionfor query, wherein the each record includes at least originatingidentifier information and application information; storing, by themobile data processing system, information for a data record of themobile data processing system for comparison to the searchableinformation for the each record in the historical collection for query;accepting, by the mobile data processing system, a search request forsearching the searchable information for the each record in thehistorical collection for query, the search request including theconditional match specification for comparing to the at least one datafield of the searchable information for the each record in thehistorical collection for query; searching, by the mobile dataprocessing system, the searchable information for the each record in thehistorical collection for query, upon the accepting; retrieving, by themobile data processing system, one or more entries from the historicalcollection for query, upon the searching, wherein the one or moreentries correspond to one or more of the plurality of wireless datarecords and each of the one or more entries has at least one data fieldmatching the conditional match specification; and communicating, by themobile data processing system, information for the one or more entriesfrom the historical collection for query to request processing of thesearch request at the mobile data processing system.
 2. The programproduct of claim 1 wherein the receiving, by the mobile data processingsystem, the plurality of wireless data records from the plurality ofdata processing systems determined by the mobile data processing systemto have been in the wireless vicinity of the mobile data processingsystem includes receiving the plurality of wireless data records from aplurality of other mobile data processing systems.
 3. The programproduct of claim 1 wherein the retrieving, by the mobile data processingsystem, one or more entries from the historical collection for queryincludes retrieving the one or more entries in a sorted order.
 4. Theprogram product of claim 3 wherein the sorted order is determined with asort specification of the search request.
 5. The program product ofclaim 3 wherein the sorted order is an order by sorting on a pluralityof data fields of the searchable information for the each record in thehistorical collection for query.
 6. The program product of claim 1wherein the search request is a SQL search request.
 7. The programproduct of claim 1 that, when executed, causes the operations includingpresenting the information for the one or more entries to a userinterface.
 8. The program product of claim 7 wherein the user interfaceis for a user to manage the one or more entries by at least one of: viewthe one or more entries, delete the one or more entries, modify the oneor more entries, or add to the one or more entries.
 9. The programproduct of claim 1 that, when executed, causes the operations includingproviding an alert for a device that is nearby.
 10. The program productof claim 1 that, when executed, causes the operations includingtransmitting outbound, by the mobile data processing system, theinformation for the data record of the mobile data processing system.11. The program product of claim 1 that, when executed, causes theoperations including maintaining, by the mobile data processing system,a Location Based eXchange behavior conditional expression for how themobile data processing system should interact with the plurality of dataprocessing systems determined by the mobile data processing system tohave been in the wireless vicinity of the mobile data processing system.12. The program product of claim 1 that, when executed, causes theoperations including maintaining the searchable information for the eachrecord in the historical collection for query according to a permissionconfigured by a particular user.
 13. The program product of claim 1wherein the searchable information for the each record in the historicalcollection for query includes at least one of: information for alocation technology, information for a triangulation measurement,information for a time difference of arrival measurement, informationfor a time of arrival measurement, information for an angle of arrivalmeasurement, information for a yaw measurement, information for a pitchmeasurement, information for a roll measurement, information for anaccelerometer measurement, information for distinguishing an elevationor altitude, information for a communications signal strength of atransmission, information for a communications wave spectrumcharacteristic of a transmission, information for a communications wavespectrum class of a transmission, information for a communications wavespectrum frequency of a transmission, information received by theparticular data processing system from a remote data processing systemthat is remote to the particular data processing system, informationmaintained by an application, information for an application in use,information for an application context of an application, informationfor a navigation Application Programming Interface, information for alocation, information for a situational location, information for aspeed, information for a heading, time information, information for atleast one service, is information for service criteria, information foran environmental condition, information for a web site, information fora physical address, information for a logical address, information for atransaction, information for a user configuration, information formonitoring movement, information for an identifier associated with theparticular data processing system, or information in accordance with oneor more permissions configured by a user associated with the particulardata processing system.
 14. The program product of claim 13 that, whenexecuted, causes the operations including determining locationinformation of the mobile data processing system.
 15. The programproduct of claim 1 that, when executed, causes the operations includinggoverning, by the mobile data processing system, with a userconfiguration what receipt processing should be performed for the eachrecord of the plurality of wireless data records from the plurality ofdata processing systems, wherein the receipt processing depends on theuser configuration for distinguishing one wireless data record of theplurality of wireless data records from another wireless data record ofthe plurality of wireless data records.
 16. The program product of claim15 wherein the user configuration is configured by a user of the mobiledata processing system for providing permission to an identity of atleast one of the plurality of data processing systems determined by themobile data processing system to have been in the wireless vicinity ofthe mobile data processing system.
 17. The program product of claim 15wherein the user configuration is configured by a user of at least oneof the plurality of data processing systems determined by the mobiledata processing system to have been in the wireless vicinity of themobile data processing system for providing permission to an identity ofthe mobile data processing system.
 18. The program product of claim 15wherein the user configuration enables providing an alert for a devicethat is nearby.
 19. A storage device storing a program that, whenexecuted, causes operations comprising: receiving, by a mobile dataprocessing system, a plurality of wireless data records from a pluralityof data processing systems determined by the mobile data processingsystem to have been in a wireless vicinity of the mobile data processingsystem, wherein the plurality of wireless data records are received bythe mobile data processing system with a purely peer to peer interactionasynchronously from any user interface of the mobile data processingsystem; storing, by the mobile data processing system, searchableinformation for each record of the plurality of wireless data recordsfrom the plurality of data processing systems in a historical collectionfor query with a conditional match specification, wherein theconditional match specification is for comparing to at least one datafield of the searchable information for the each record in thehistorical collection for query, wherein the each record includes atleast originating identifier information and application information;storing, by the mobile data processing system, information for a datarecord of the mobile data processing system for comparison to thesearchable information for the each record in the historical collectionfor query; accepting, by the mobile data processing system, a searchrequest for searching the searchable information for the each record inthe historical collection for query, the search request including theconditional match specification for comparing to the at least one datafield of the searchable information for the each record in thehistorical collection for query; searching, by the mobile dataprocessing system, the searchable information for the each record in thehistorical collection for query, upon the accepting; retrieving, by themobile data processing system, one or more entries from the historicalcollection for query, upon the searching, wherein the one or moreentries correspond to one or more of the plurality of wireless datarecords and each of the one or more entries has at least one data fieldmatching the conditional match specification; and communicating, by themobile data processing system, information for the one or more entriesfrom the historical collection for query to request processing of thesearch request at the mobile data processing system.
 20. A memory devicestoring instructions for execution by one or more processors, whereinthe instructions cause operations comprising: receiving, by a mobiledata processing system, a plurality of wireless data records from aplurality of data processing systems determined by the mobile dataprocessing system to have been in a wireless vicinity of the mobile dataprocessing system, wherein the plurality of wireless data records arereceived by the mobile data processing system with a purely peer to peerinteraction asynchronously from any user interface of the mobile dataprocessing system; storing, by the mobile data processing system,searchable information for each record of the plurality of wireless datarecords from the plurality of data processing systems in a historicalcollection for query with a conditional match specification, wherein theconditional match specification is for comparing to at least one datafield of the searchable information for the each record in thehistorical collection for query, wherein the each record includes atleast originating identifier information and application information;storing, by the mobile data processing system, information for a datarecord of the mobile data processing system for comparison to thesearchable information for the each record in the historical collectionfor query; accepting, by the mobile data processing system, a searchrequest for searching the searchable information for the each record inthe historical collection for query, the search request including theconditional match specification for comparing to the at least one datafield of the searchable information for the each record in thehistorical collection for query; searching, by the mobile dataprocessing system, the searchable information for the each record in thehistorical collection for query, upon the accepting; retrieving, by themobile data processing system, one or more entries from the historicalcollection for query, upon the searching, wherein the one or moreentries correspond to one or more of the plurality of wireless datarecords and each of the one or more entries has at least one data fieldmatching the conditional match specification; and communicating, by themobile data processing system, information for the one or more entriesfrom the historical collection for query to request processing of thesearch request at the mobile data processing system.